Timer mit F-Taste aktivieren? Visual Basic

03/19/2011 19:54 WolfBoard#1
Wie oben schon steht möchte ich wissen wie man einen Timer mit einer F-Taste aktiviert.

Also ich will ein Bot erstellen der soll automatisch klicken und will ihn mit einer Taste z.B. F5 Öffnen und mit F6 Stoppen.

Wer kann mir ein Code schicken?
03/19/2011 20:00 Kraizy​#2
Hallo,
versuch mal^^:
PHP Code:
//Deklarationen:
   
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal id As IntegerByVal fsModifier As IntegerByVal vk As Integer) As Integer
   
Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal 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.Handle1Key_NONEKeys.F1)
   
RegisterHotKey(Me.Handle2Key_NONEKeys.F2)
   
RegisterHotKey(Me.Handle3Key_NONEKeys.F3)

//Beim Schließen (Form_Closing) wieder entfernen:
   
UnregisterHotKey(Me.Handle1)
   
UnregisterHotKey(Me.Handle2)
   
UnregisterHotKey(Me.Handle3
Viel Spaß!
03/19/2011 20:23 WolfBoard#3
Okay Danke erzähl mal wie man da jetzt die Hotkeys verstellt z.B. bei 1ner Form F1 für Timer und bei der anderen F5 für Timer
03/19/2011 20:35 Kraizy​#4
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...
03/19/2011 20:43 WolfBoard#5
Okay Danke ja ich hab ihn mir angeguckt hab nur nich richtig durchgelesen.
03/21/2011 13:19 crossfireXfreak#6
Quote:
Originally Posted by Fisticuff View Post
Hallo,
versuch mal^^:
PHP Code:
//Deklarationen:
   
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal id As IntegerByVal fsModifier As IntegerByVal vk As Integer) As Integer
   
Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal 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.Handle1Key_NONEKeys.F1)
   
RegisterHotKey(Me.Handle2Key_NONEKeys.F2)
   
RegisterHotKey(Me.Handle3Key_NONEKeys.F3)

//Beim Schließen (Form_Closing) wieder entfernen:
   
UnregisterHotKey(Me.Handle1)
   
UnregisterHotKey(Me.Handle2)
   
UnregisterHotKey(Me.Handle3
Viel Spaß!
kannst du mal ein tut machen?
03/21/2011 14:27 Kraizy​#7
Quote:
Originally Posted by crossfireXfreak View Post
kannst du mal ein tut machen?
Wie meinst du, ein Tut?
Verstehst du nicht wie du es weiter ausbauen kannst, oder war die Frage eher anders gemeint...?
03/21/2011 18:37 crossfireXfreak#8
Quote:
Originally Posted by Fisticuff View Post
Wie meinst du, ein Tut?
Verstehst du nicht wie du es weiter ausbauen kannst, oder war die Frage eher anders gemeint...?
könntest du einfach ein video machen und zeigen wie man des macht ich kenn mich net so gut aus .
03/21/2011 20:49 Kraizy​#9
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 IntPtrByVal id As IntegerByVal fsModifier As IntegerByVal vk As Integer) As Integer
Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal 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.ObjectByVal e As System.EventArgsHandles DeineForm.Load
   RegisterHotKey
(Me.Handle1Key_NONEKeys.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:
PHP Code:
RegisterHotKey(Me.Handle1Key_NONEKeys.F1
RegisterHotKey(Me.Handle2Key_NONEKeys.F2
RegisterHotKey(Me.Handle3Key_NONEKeys.F3
RegisterHotKey(Me.Handle4Key_NONEKeys.A)
RegisterHotKey(Me.Handle5Key_NONEKeys.B
RegisterHotKey(Me.Handle6Key_NONEKeys.C)
... 
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 //wenn Zahl 1
                    
MessageBox.Show("F1!"//hier kannst du halt angeben was passieren soll.
                
Case //wenn Zahl 2
                    
MessageBox.Show("F2!")
                Case 
//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.ObjectByVal e As System.Windows.Forms.FormClosingEventArgsHandles DeineForm.FormClosing
   
//hier benutzt du die oben deklarierte Funktion "UnregisterHotKey"
   
UnregisterHotKey(Me.Handle1)  //hier deine Zahl wieder angeben
   
UnregisterHotKey(Me.Handle2
   ...
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 IntPtrByVal id As IntegerByVal fsModifier As IntegerByVal vk As Integer) As Integer
Private Declare Sub UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtrByVal 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.ObjectByVal e As System.EventArgsHandles MyBase.Load
   RegisterHotKey
(Me.Handle1Key_NONEKeys.F1)
   
RegisterHotKey(Me.Handle2Key_NONEKeys.F2)
   
RegisterHotKey(Me.Handle3Key_NONEKeys.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.ObjectByVal e As System.Windows.Forms.FormClosingEventArgsHandles MyBase.FormClosing
   UnregisterHotKey
(Me.Handle1)
   
UnregisterHotKey(Me.Handle2)
   
UnregisterHotKey(Me.Handle3)  
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.