Windows- und Plus-Taste simulieren

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von eichseinet.

    Windows- und Plus-Taste simulieren

    Hallo!
    Ich versuche jetzt seit gut 3 Stunden die Windows-Taste in Kombination mit der Plus-Taste in VB2008 zu simulieren. Die Windows-Taste konnte ich inzwischen simulieren. Mehr aber nicht. Es klappte übrigens nicht über sendkeys("91"). Kann mir bitte jemand erklären wie man "Windows-Taste" + "Plustaste" senden kann. Außerdem brauche ich noch "Windows-Taste" + "Minustaste"

    Gruß

    eddi
    Minus sendet man mit:

    VB.NET-Quellcode

    1. Sendkeys.Send("-")


    und Wintaste mit:

    VB.NET-Quellcode

    1. Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    2. Const KEYEVENTF_KEYUP = &H2
    3. Const VK_LWIN = &H5B


    und dem Aufruf:

    VB.NET-Quellcode

    1. Call keybd_event(VK_LWIN, 0, 0, 0) 'Windows Taste
    2. Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)


    Kombinieren kann ich dat allerdings net ;D
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    VB.NET-Quellcode

    1. Private Declare Sub keybd_event Lib "user32" ( _
    2. ByVal bVk As Byte, _
    3. ByVal bScan As Byte, _
    4. ByVal dwFlags As Long, _
    5. ByVal dwExtraInfo As Long)
    6. Const KEYEVENTF_KEYUP = &H2
    7. Const VK_LWIN = &H5B
    8. Const plus = &H6B '&H6D für Minus


    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Call keybd_event(VK_LWIN, 0, 0, 0) 'Windows Taste
    3. Call keybd_event(plus, 0, 0, 0)
    4. End Sub


    so funktioniert es. kurz nachdem ich den Beitra geschrieben hatte fiel der Groschen... Mir fehlte noch der Code für + und - und ich wusste nicht wie man Tasten kombinieren kann. Außerdem musste "Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)" weg. Was macht der Teil eigentlich? Ist doch nicht die Pfeiltaste, oder?

    Trotzdem Danke Ninoxo

    eddi
    Ich meine das dieser Teil die gedrückte taste
    wieder 'loslässt', also das KeyUp-Event...
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Danke Ninoxo. Stimmt was Du sagst; damit lässt man die Taste wieder los. Darum hat das also mit der Zeile zwischen den Befehlen nicht geklappt. Ich hab das jetzt mal mit mehreren Buttons getestet. Der 1. drückt die Win-Taste, der 2. das Plus und der 3. "lässt beide wieder los".
    1. + 2. nacheinander drücken => geht
    1., 3., 2. drücken => geht nicht, weil Win-Taste losgelassen

    Und hier für alle, die nicht so genau wissen was gemeint ist der fertige Code:

    VB.NET-Quellcode

    1. Call keybd_event(VK_LWIN, 0, 0, 0) 'Windows-Taste drücken
    2. Call keybd_event(plus, 0, 0, 0) 'Plus-Taste drücken
    3. Call keybd_event(plus, 0, KEYEVENTF_KEYUP, 0) 'Plus-Taste loslassen
    4. Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0) 'Windows-Taste loslassen


    Und falls Ihr andere Tasten braucht:
    &H => steht immer vorne dran, bedeutet einfach nur Hexadezimal
    gefolgt vom eigentlichen Code der Taste, falls Ihr den nicht schon als Hex-Wert findet, einfach die Dezimale Zahl mit dem Win Taschenrechner nach Hex wandeln; fertig

    eddi