VB 5/6-Tipp 0616: Komplexe Tastenkombinationen senden
von Konrad Doblander
Beschreibung
Dieser Tipp stellt eine Erweiterung des Tipps Tipp 155 da. Er bietet die Möglichkeit, Tastenkombinationen zu senden, die Sendkeys nicht senden kann (z.B. wenn es darum geht, eine Taste gedrückt zu halten). Dies wird am Beispiel des "Computer suchen" Dialogs demonstriert.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Projekt1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command1" Option Explicit ' Deklaration ' Auslösen eines Tastatur_Events per Code Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) ' Tastendruck absetzen ' keyUp = 0 Up-/Down | = 1 nur Up | = -1 nur Down Public Sub SendKeyStroke(ByRef hCode As Byte, Optional ByVal keyUp As Long = 0) Const KEYEVENTF_KEYUP = &H2& 'nur KeyUp senden If keyUp = 1 Then keyUp = 0 Else 'KeyDown senden Call keybd_event(hCode, 0&, 0&, 0&) End If If keyUp = 0 Then 'KeyUp senden Call keybd_event(hCode, 0&, KEYEVENTF_KEYUP, 0&) DoEvents End If End Sub Private Sub Command1_Click() 'nur keyDown 'H5B: Win-Taste SendKeyStroke &H5B, -1 SendKeyStroke vbKeyControl, -1 SendKeyStroke vbKeyF, -1 'nur keyUp SendKeyStroke vbKeyF, 1 SendKeyStroke vbKeyControl, 1 SendKeyStroke &H5B, 1 End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Projekt1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 1 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Clemens Weiß am 11.01.2005 um 22:48
Hi,
netter Tipp, vielen Dank.
Auch damit lässt sich allerdings die Tastenkombination Strg+Alt+Entf nicht senden.
Sollte es das Ziel sein, den Taskmanager zu öffnen, geht das allerdings auch viel einfacher mit
Shell "taskmgr.exe", vbNormalFocus
Die Funktion keybd_event ist übrigens mittlerweile unter Windows NT/2000/XP von der Funktion SendInput abgelöst:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/KeyboardInput/KeyboardInputReference/KeyboardInputFunctions/keybd_event.asp