Sendkeys mit Keydown?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Sendkeys mit Keydown?

    Hallo ihr lieben,

    das ich Sendkeys benutzt habe ich sicherlich 2 Jahre her doch stehe ich aktuell vor einem Problem. Ich muss Tastendrücke Simlulieren, muss dabei aber eine Taste gedrückt halten. Das ganz normale bedienen der Tastatur funktioniert problemlos. Nur wie halte ich, als Beispiel die Taste e gedrückt?

    liebe grüße,
    Daniel
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Wow, das funktioniert hervorragend!! Vielen dank!

    VB.NET-Quellcode

    1. Private Sub LetKeyGo(ByVal key As Byte)
    2. Dim kb_delay As Integer
    3. Dim kb_speed As Integer
    4. SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, kb_delay, 0)
    5. SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, kb_speed, 0)
    6. keybd_event(key, MapVirtualKey(key, 0), 2, 0)
    7. End Sub
    8. Private Sub HoldKeyDown(ByVal key As Byte)
    9. Dim kb_delay As Integer
    10. Dim kb_speed As Integer
    11. SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, kb_delay, 0)
    12. SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, kb_speed, 0)
    13. keybd_event(key, MapVirtualKey(key, 0), 0, 0)
    14. End Sub


    VB.NET-Quellcode

    1. HoldKeyDown(Keys.E)
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    C.O.D.E schrieb:

    Wow, das funktioniert hervorragend!!
    Aber nicht mit Option Strict On :!:
    Visual Studio - Empfohlene Einstellungen
    Wenn Du dann noch die API-Deklarationen dazu posten würdest, wäre es hervorragend.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    OK

    VB.NET-Quellcode

    1. Const SPI_GETKEYBOARDDELAY = 22
    2. Const SPI_GETKEYBOARDSPEED = 10
    3. Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)
    4. Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Integer, ByVal wMapType As Integer) As Integer
    5. Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, ByRef lpvParam As Integer, ByVal fuWinIni As Integer) As Integer
    6. Private Sub LetKeyGo(ByVal key As Byte)
    7. Dim kb_delay As Integer
    8. Dim kb_speed As Integer
    9. SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, kb_delay, 0)
    10. SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, kb_speed, 0)
    11. keybd_event(key, CByte(MapVirtualKey(key, 0)), 2, 0)
    12. End Sub
    13. Private Sub HoldKeyDown(ByVal key As Byte)
    14. Dim kb_delay As Integer
    15. Dim kb_speed As Integer
    16. SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, kb_delay, 0)
    17. SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, kb_speed, 0)
    18. keybd_event(key, CByte(MapVirtualKey(key, 0)), 0, 0)
    19. End Sub

    Morrison schrieb:

    OK

    C.O.D.E schrieb:

    VB.NET-Quellcode

    1. HoldKeyDown(Keys.E)
    Option Strict On fehlt da noch immer, und was muss ich tun, damit der Code funktioniert?
    Hier passiert bei mir immer noch nix:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub BtnStart_Click(sender As Object, e As EventArgs) Handles BtnStart.Click
    2. HoldKeyDown(Keys.E)
    3. End Sub
    4. Private Sub BtnStop_Click(sender As Object, e As EventArgs) Handles BtnStop.Click
    5. LetKeyGo(Keys.E)
    6. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!