Visual Basic World - Programmierung und BeispieleVisual Basic World - Tipps und TutorialsVisual Basic World - Source-Code und Forum

<leer>

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

<leer> Aktuelle Seite Back To Top
Druckansicht | Feedback | Favoriten
Copyright © Visual Basic World, 2000-2022 | Kontakt | Impressum

Visual Basic World @ Twitter

Folgen Sie Visual Basic World!

Visual Basic World @ Twitter
Wenn Ihnen Visual Basic World gefällt, dann folgen Sie uns doch bei Twitter (@visualbasicwrld).
Vielen Dank!