//Deklarationen: Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer) Private Const Key_NONE As Integer = &H0 Private Const WM_HOTKEY As Integer = &H312
//Sub zum Auswerten: Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_HOTKEY Then Select Case m.WParam Case 1 MessageBox.Show("F1!") Case 2 MessageBox.Show("F2!") Case 3 MessageBox.Show("F3!") End Select End If MyBase.WndProc(m) End Sub
//Im Load_Event setzt du die Hotkeys: RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1) RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F2) RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F3)
Ehh..was?
Wenn du dir den Code wenigstens anschauen würdest, würdest du wissen, wie du das machst. Im Load_Event setzt du halt F1 & F5. Dann in der WndProc-Sub beim Case was halt passieren soll..machst das MessageBox.Show(...) weg und fügst halt Timer1.Start() ein...
//Deklarationen:
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer
Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer)
Private Const Key_NONE As Integer = &H0
Private Const WM_HOTKEY As Integer = &H312
//Sub zum Auswerten:
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
Select Case m.WParam
Case 1
MessageBox.Show("F1!")
Case 2
MessageBox.Show("F2!")
Case 3
MessageBox.Show("F3!")
End Select
End If
MyBase.WndProc(m)
End Sub
//Im Load_Event setzt du die Hotkeys:
RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1)
RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F2)
RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F3)
Hm..naja eigentlich steht da doch schon alles. Also:
Ersteinmal brauchst du diese Funktionen & Variablen (kannst einfach so kopieren - musst nichts ändern):
PHP Code:
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer) Private Const Key_NONE As Integer = &H0 Private Const WM_HOTKEY As Integer = &H312
Diese fügst du z.B. unter "Public Class *NameDerKlasse*"
So, dann fügst du deiner eigenen Form Hotkeys hinzu indem du das Handle deiner Form benutzt (Me.Handle) - am besten fügst du sie gleich beim Starten der Form hinzu, also in das Form_Load-Ereignis. Dazu benutzt du die zuvor oben deklarierte "RegisterHotKey"-Funktion:
PHP Code:
Private Sub DeineForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeineForm.Load RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1) End Sub
Da wo die 1 steht, kannst du egal welche Zahl einfügen, musst diese später aber wieder benutzen. Als letzten Parameter sagst du deinem Programm für welche Taste das gilt. Also z.B. "Keys.F1", "Keys.F2", "Keys.A", "Keys.B"...
Das ganze kannst du jetzt für alle Tasten die du willst machen:
So, dann brauchst du noch die Sub, die auf deine Hotkeys reagiert, nämlich die überschriebene "WndProc":
PHP Code:
Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_HOTKEY Then //prüfen ob die "Nachricht" ein Hotkey ist Select Case m.WParam //wenn es ein Hotkey ist, dann wird mit einer Select-Anweisung geprüft, welches Hotkey das war, dazu benutzt du diese Zahlen von denen ich oben gesprochen habe (in meinem Beispiel war halt die Zahl 1 für die Taste F1 und die Zahl 2 für die Taste F2..) Case 1 //wenn Zahl 1 MessageBox.Show("F1!") //hier kannst du halt angeben was passieren soll. Case 2 //wenn Zahl 2 MessageBox.Show("F2!") Case 3 //wenn Zahl 3 MessageBox.Show("F3!") End Select End If MyBase.WndProc(m) End Sub
So, und zum Schluss entfernst du die gesetzten Hotkeys einfach wieder, z.B. im Form_Closing-Ereignis (wenn du deine Form schließt):
PHP Code:
Private Sub DeineForm_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles DeineForm.FormClosing //hier benutzt du die oben deklarierte Funktion "UnregisterHotKey" UnregisterHotKey(Me.Handle, 1) //hier deine Zahl wieder angeben UnregisterHotKey(Me.Handle, 2) ... End Sub
Hier nochmal der gesamte Code (Formname etc. wurde nicht geändert - standard Projekt halt^^). Erstell einfach mal ein neues Projekt, geh in das Codefenster, lösche alles und füg das ein:
PHP Code:
Public Class Form1 Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As Integer, ByVal vk As Integer) As Integer Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer) Private Const Key_NONE As Integer = &H0 Private Const WM_HOTKEY As Integer = &H312
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load RegisterHotKey(Me.Handle, 1, Key_NONE, Keys.F1) RegisterHotKey(Me.Handle, 2, Key_NONE, Keys.F2) RegisterHotKey(Me.Handle, 3, Key_NONE, Keys.F3) End Sub
Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_HOTKEY Then Select Case m.WParam Case 1 MessageBox.Show("Die Taste F1 wurde gedrückt!") Case 2 MessageBox.Show("Die Taste F2 wurde gedrückt!") Case 3 MessageBox.Show("Die Taste F3 wurde gedrückt!") End Select End If MyBase.WndProc(m) End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing UnregisterHotKey(Me.Handle, 1) UnregisterHotKey(Me.Handle, 2) UnregisterHotKey(Me.Handle, 3) End Sub End Class
Ein Video kann ich zurzeit nicht machen, hab dafür nicht besonders viel Zeit bzw. Lust..hoffe das hier kann dir auch weiterhelfen.
KI und Visual Basic? 12/04/2010 - .NET Languages - 9 Replies Hi,
ist es möglich in Visual Basic eine einfache KI für ein Tic Tac Toe Spiel zu machen?
Gruss
Visual C++ (C++), Visual Basic, oder AutoIT? 06/24/2010 - .NET Languages - 11 Replies Hallo Zusammen
Ich würde gerne mit dem Programmieren anfangen.
Meine Vorstellungen:
Es müsste möglich sein, eigene Programme zu schreiben wie z. B. MSN, Emule oder ähnliches. Natürlich nie in dieser Grösse nur als Beispiel.
Als weiteres sollte mit der gleichen Programmiersprache auch die Möglichkeit bestehen einen WoW Bot zu schreiben. Habe gehört die meisten Bots sind in Auto IT geschrieben. Gibt es unterschiede wegen des Warden schutzes oder kommt es nicht darauf an?
VB.Net- Visual basic 09/04/2008 - CO2 Programming - 2 Replies Any 1 know what code I would need to write to have my program I create
attach to the process and scan for a process?
Thanx much....peace :handsdown: