[VB.Net] SendKeys Bzw. SendWait Frage

10/08/2011 17:01 Diablo_#1
Hallo alle zusammen,

ich habe eine Frage, die wie folgt lautet:

Ich habe ein Private Sub gemacht und möchte wenn F12 gedrückt wird, das etwas passiert.

Allerdings mache ich das nicht mit einem Timer oder sowas. Ich möchte einfach, wenn die Form aktiv ist und man F12 drückt, das etwas passiert.

Man kann es ja leider nicht so machen:

Code:
If SendKeys.SendWait("{F12}") = True Then

Aktion startet

End If
Weiß da jemand wie ich das machen kann? Im Internet finde ich nur diesen Chatspammer Mist.

Grüße
10/08/2011 18:38 sepei#2
über ein timer würde es so gehen
Dim hotkey1 As Boolean ' <-- hier erstmal den hotkey definieren
hotkey1 = GetAsyncKeyState(123) <-- 123 für F12
If hotkey1 = True Then ' < -- wenn er dann ausgelöst wird
End if

über send keys würde mir das eigenartig vorkommen da du immerhin die Tasten sendest und nicht abfrägst
10/08/2011 19:10 Devil589#3
Wie "sepei" schon sagte, nutz lieber einen Timer.
Denn alles andere wäre zu kompliziert.
Denn du musst ja etwas haben, was die ganze Zeit überprüft ob die Taste gedrückt wurde oder nicht.
Und über einen Timer ist es die einfachste Möglichkeit meiner Meinung nach.
10/08/2011 20:34 Kraizy​#4
PHP Code:
Private Sub Form1_KeyDown(ByVal sender As System.ObjectByVal e As System.Windows.Forms.KeyEventArgsHandles MyBase.KeyDown
        
If e.KeyCode Keys.F12 Then

        End 
If
    
End Sub 
10/08/2011 20:50 Diablo_#5
Danke euch 3 erstmal. Werde es morgen ausprobieren.
10/08/2011 21:03 Magiston#6
Quote:
Originally Posted by sepei View Post
über ein timer würde es so gehen
Dim hotkey1 As Boolean ' <-- hier erstmal den hotkey definieren
hotkey1 = GetAsyncKeyState(123) <-- 123 für F12
If hotkey1 = True Then ' < -- wenn er dann ausgelöst wird
End if

über send keys würde mir das eigenartig vorkommen da du immerhin die Tasten sendest und nicht abfrägst
Wenn du das so in dein Timer Event einfügst, dürfte es nicht klappen. Kannst es ja mal ausprobieren.

Quote:
Originally Posted by xKraizy View Post
PHP Code:
Private Sub Form1_KeyDown(ByVal sender As System.ObjectByVal e As System.Windows.Forms.KeyEventArgsHandles MyBase.KeyDown
        
If e.KeyCode Keys.F12 Then

        End 
If
    
End Sub 
:)


@Threadinhaber
Sollte wiederholt ein Problem auftreten, so kannst du dich gerne an mich wenden.
10/09/2011 10:14 sepei#7
Quote:
Originally Posted by Magiston View Post
Wenn du das so in dein Timer Event einfügst, dürfte es nicht klappen. Kannst es ja mal ausprobieren.



:)


@Threadinhaber
Sollte wiederholt ein Problem auftreten, so kannst du dich gerne an mich wenden.
Natürlich musst du noch den Timer starten aber sonst funktioniert das so wirklich gut wird bei mir auch in der schule für ein Anti Lehrer programm eingesetzt ^^
Die zweite Methode habe ich gerade getestet aber scheint bei mir nicht zu funktionieren da das Event bei mir nie eintrat.
Aber der Entscheidende Vorteil meiner Meinung nach ist an meiner Methode das wenn das Programm auch irgendwo im Hintergrund läuft es erkennt ob diese Taste gedrückt wird. D.h du könntest sogar ein Game im Vollbild laufen lassen und das Programm würde erkennen das die Taste gedrückt wurde.
10/09/2011 11:14 Magiston#8
Quote:
Originally Posted by sepei View Post
Natürlich musst du noch den Timer starten aber sonst funktioniert das so wirklich gut wird bei mir auch in der schule für ein Anti Lehrer programm eingesetzt ^^
Die zweite Methode habe ich gerade getestet aber scheint bei mir nicht zu funktionieren da das Event bei mir nie eintrat.
Aber der Entscheidende Vorteil meiner Meinung nach ist an meiner Methode das wenn das Programm auch irgendwo im Hintergrund läuft es erkennt ob diese Taste gedrückt wird. D.h du könntest sogar ein Game im Vollbild laufen lassen und das Programm würde erkennen das die Taste gedrückt wurde.
Quote:
Dim hotkey1 As Boolean ' <-- hier erstmal den hotkey definieren
hotkey1 = GetAsyncKeyState(123) <-- 123 für F12
If hotkey1 = True Then ' < -- wenn er dann ausgelöst wird
End if
GetAsyncKeyState müsste fehlerhaft angestrichen sein. Die Funktion muss deklariert werden. Außerdem fehlt das Hochkomma in Zeile 2, um dies als Kommentar zu deuten.
10/09/2011 13:07 Kraizy​#9
@Magiston Vielleicht soll es ja kein C&P-Code sein..
Trotzdem versteh ich nicht, warum man einen Timer + GetAsyncKeyState nehmen sollte, wenn das ganze auch einfach über das Form_KeyDown-Event geht. Der TE sagte ja, wenn seine Form im Vordergrund ist bzw. den Fokus besitzt, da reicht sowas völlig aus..