Jak wysłać zdarzenie key up / key down do aktualnie otwartej aplikacji

0

No więc wiem że można wysłać dowolny przycisk przez sendkeys.SendWait(); jednak ja chce wysłać samo zdarzenie key down / key up. Da się to jakoś zrobić ?

1

Niespecjalnie... (pewnie można za pomocą WinAPI - ale nie wiem co WinFormy dokładnie z nimi robią, a zresztą to rozwiązanie najgorsze z możliwych) Tzn moim zdaniem coś niepotrzebnie komplikujesz - chcesz wykonać kod który masz w keyDown w pewnym momencie? Zrób z kodu który chcesz wywołać odrębną metodę i wywołaj ją w zdarzeniu keyDown i tam gdzie jeszcze chcesz.

0

Tutaj masz zaawansowany przykład: http://www.pinvoke.net/default.aspx/user32.sendinput

Kiedyś pod VB.NET robiłem to w następujący sposób:

    Private Declare Sub keybd_event Lib "User32" _
            (ByVal bVk As Byte, ByVal bScan As Byte, _
            ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Const keyV = &H56
    Private Const keyX = &H58
    Private Const keyQ = &H51
    Private Const keyW = &H57
    Private Const keyE = &H45
    Private Const keyR = &H52
    Private Const keyT = &H54
    Private Const keyY = &H59
    Private Const key1 = &H31
    Private Const key2 = &H32
    Private Const key3 = &H33
    Private Const key4 = &H34
    Private Const key5 = &H35
    Private Const key6 = &H36
    Private Const keyUp = &H2

I przykład użycia:

            keybd_event(keyV, 0, 0, 0) 'Key V down
            Thread.Sleep(450)
            keybd_event(keyV, 0, keyUp, 0) 'Key V up
0

Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1