|
Tipp 042: Maus automatisch/ferngesteuert per Source Code klicken lassen
Autor: Alexander Kopatz VB-Version: Visual Basic 6.0 Download: Beispielprojekt Tipp-042
Beschreibung
Nicht immer ist es gewünscht, nötig oder auch möglich, dass eine Interaktion mit dem System durch einen Maus-Klick des Benutzers erfolgt. Daher kann es sehr hilfreich sein eine Möglichkeit zur Verfügung zu haben die Maus quasi ferngesteuert per Code-Anweisung klicken zu lassen. Etwa zur Verwendung in einer Fernwartungsanwendung oder zum betätigen eines Bestätigungsfeldes bei einem automatisierten Programmablauf. Mit den Funktionen und Methoden die Visual Basic standardmäßig bereit hält ist ein automatisiertes Klicken jedoch nicht ohne weiteres möglich. Sehr hilfreich ist daher ein Blick in die Windows API. Dort findet sich die Funktion mouse_event, welcher sich zur Feinsteuerung zahlreich Parameter übergeben lassen. So ist es ohne weiteres möglich zu bestimmen welche Art von Interaktion ausgelöst werden soll. Denkbar sind etwa ein Klick mit der linken Maustaste, mit der rechten Maustaste oder auch ein Doppelklick. Zur Veranschaulichung und um zu verhindern, dass sich das Beispiel-Projekt selbst in eine Art "Klick-Schleife" versetzt wird hier der Mauszeiger zuvor über die API-Funktion SetCursorPos über einem Beispielfeld platziert.
Quellcode
frmKlick
CommandButton cmdKlick
CommandButton cmdKlick
CommandButton cmdKlick
CommandButton cmdKlick
Form frmKlick
Label lblKlick
' VISUAL BASIC WORLD
' ===========================================
' Das große Portal zum Thema Visual Basic.
'
' Wenn Ihnen dieser Source Code gefallen hat,
' dann empfehlen Sie Visual Basic World bitte
' weiter und/oder setzen Sie einen Link auf:
'
' http://www.visualbasicworld.de/
'
' Vernetzen Sie sich mit uns:
'
' http://twitter.com/visualbasicwrld
Option Explicit
Private Declare Sub mouse_event Lib "user32" _
(ByVal dwFlags As Long, ByVal dx As Long, _
ByVal dy As Long, ByVal cButtons As Long, _
ByVal dwExtraInfo As Long)
Private Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, ByVal Y As Long) As Long
Private KlickCount As Boolean
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Private Sub cmdKlick_Click(Index As Integer)
Call SetCursorPos((Me.Left / Screen.TwipsPerPixelX) + _
110, (Me.Top / Screen.TwipsPerPixelX) + 220)
'Hier wird der Cursor auf das Testfeld gesetzt,
'um das Ergebnis der Anweisung zu überprüfen.
Select Case Index
Case 0
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
'Ein Klick mit der linken Maustaste
Case 1
Call mouse_event(MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0)
'Ein Klick mit der mittleren Maustaste
Case 2
Call mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0)
'Ein Klick mit der rechten Maustaste
Case 3
Call cmdKlick_Click(0)
Call cmdKlick_Click(0)
End Select
End Sub
Private Sub lblKlick_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
KlickCount = False
End Sub
Private Sub lblKlick_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Button
Case 1
If KlickCount = True Then
lblKlick.Caption = "Klick: doppel Links"
Else
lblKlick.Caption = "Klick: links"
End If
Case 2
lblKlick.Caption = "Klick: rechts"
Case 4
lblKlick.Caption = "Klick: mitte"
End Select
KlickCount = True
End Sub
|
Visual Basic World @ Twitter
Folgen Sie Visual Basic World!
Wenn Ihnen Visual Basic World gefällt, dann folgen Sie uns doch bei
Twitter
(@visualbasicwrld).
Vielen Dank!
|