Prüft, ob eine bestimmte Taste auf der Tastatur oder Maus aktuell gedrückt wird oder seit dem letzten Aufruf der Prozedur gedrückt wurde. Mit dieser Funktion kann auch z. B. zwischen der linken und rechten Strg-Taste oder der linken und rechten Shift-Taste unterschieden werden. Falls in der Systemsteuerung die linke und rechte Maustaste vertauscht wurde, wird das von der Prozedur ignoriert (eine zusätzliche Abfrage auf GetSystemMetrics(SW_SWAPBUTTON) kann das überprüfen).
Ist das höchste Bit des Rückgabewertes gesetzt (&H8000), ist die Taste gedrückt. Wenn das niedrigste Bit (&H1) gesetzt ist, wurde die Taste nach dem letzten Aufruf von GetAsyncKeyState gedrückt - falls das nicht schon von einer anderen Anwendung empfangen wurde. Daher kann die Auswertung eines früheren Tastendrucks u. U. unzuverlässig sein.
#If VBA7 Then Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" _ (ByVal vKey As eKey) As Long #Else Private Declare Function GetAsyncKeyState Lib "user32" _ (ByVal vKey As eKey) As Long #End If Public Enum eKey VK_LBUTTON = &H1 'Linke Maustaste VK_RBUTTON = &H2 'Rechte Maustaste VK_CANCEL = &H3 'Strg+Unterbr VK_MBUTTON = &H4 'Mittlere Maustaste VK_XBUTTON1 = &H5 'linke zusätzliche Maustaste (4. Taste) VK_XBUTTON2 = &H6 'rechte zusätzliche Maustaste (5. Taste) VK_BACK = &H8 'Rücktaste VK_TAB = &H9 'Tabulator VK_CLEAR = &HC 'Löschen VK_RETURN = &HD 'Enter VK_SHIFT = &H10 'Shift (siehe auch VK_LSHIFT und VK_RSHIFT) VK_CONTROL = &H11 'Strg (siehe auch VK_LCONTROL und VK_RCONTROL) VK_MENU = &H12 'Alt VK_PAUSE = &H13 'Pause VK_CAPITAL = &H14 'Feststelltaste VK_KANA = &H15 'IME Kana (asiatische Tastaturen) VK_HANGUL = &H15 'IME Hangul (asiatische Tastaturen) VK_JUNJA = &H17 'IME Junja (asiatische Tastaturen) VK_FINAL = &H18 'IME final (asiatische Tastaturen) VK_HANJA = &H19 'IME Hanja (asiatische Tastaturen) VK_KANJI = &H19 'IME Kanji (asiatische Tastaturen) VK_ESCAPE = &H1B 'ESC VK_CONVERT = &H1C 'IME convert (asiatische Tastaturen) VK_NONCONVERT = &H1D 'IME nonconvert (asiatische Tastaturen) VK_ACCEPT = &H1E 'IME accept (asiatische Tastaturen) VK_MODECHANGE = &H1F 'IME mode change request (asiatische Tastaturen) VK_SPACE = &H20 'Leertaste VK_PRIOR = &H21 'Bild hoch VK_NEXT = &H22 'Bild ab VK_END = &H23 'Ende VK_HOME = &H24 'Pos1 VK_LEFT = &H25 'Cursor Links VK_UP = &H26 'Cursor Hoch VK_RIGHT = &H27 'Cursor Rechts VK_DOWN = &H28 'Cursor Unten VK_SELECT = &H29 'Select VK_PRINT = &H2A 'PRINTtaste VK_EXECUTE = &H2B 'Ausführen VK_SNAPSHOT = &H2C 'Druck VK_INSERT = &H2D 'Einfg VK_DELETE = &H2E 'Entf VK_HELP = &H2F 'Hilfetaste VK_0 = &H30 '0 VK_1 = &H31 '1 VK_2 = &H32 '2 VK_3 = &H33 '3 VK_4 = &H34 '4 VK_5 = &H35 '5 VK_6 = &H36 '6 VK_7 = &H37 '7 VK_8 = &H38 '8 VK_9 = &H39 '9 VK_A = &H41 'A VK_B = &H42 'B VK_C = &H43 'C VK_D = &H44 'D VK_E = &H45 'E VK_F = &H46 'F VK_G = &H47 'G VK_H = &H48 'H VK_I = &H49 'I VK_J = &H4A 'J VK_K = &H4B 'K VK_L = &H4C 'L VK_M = &H4D 'M VK_N = &H4E 'N VK_O = &H4F 'O VK_P = &H50 'P VK_Q = &H51 'Q VK_R = &H52 'R VK_S = &H53 'S VK_T = &H54 'T VK_U = &H55 'U VK_V = &H56 'V VK_W = &H57 'W VK_X = &H58 'X VK_Y = &H59 'Y VK_Z = &H5A 'Z VK_LWIN = &H5B 'Linke Windowstaste VK_RWIN = &H5C 'Rechte Windowstaste VK_APPS = &H5D 'Applications-Taste VK_SLEEP = &H5F 'Computer Sleep key VK_NUMPAD0 = &H60 '0 im Ziffernblock VK_NUMPAD1 = &H61 '1 im Ziffernblock VK_NUMPAD2 = &H62 '2 im Ziffernblock VK_NUMPAD3 = &H63 '3 im Ziffernblock VK_NUMPAD4 = &H64 '4 im Ziffernblock VK_NUMPAD5 = &H65 '5 im Ziffernblock VK_NUMPAD6 = &H66 '6 im Ziffernblock VK_NUMPAD7 = &H67 '7 im Ziffernblock VK_NUMPAD8 = &H68 '8 im Ziffernblock VK_NUMPAD9 = &H69 '9 im Ziffernblock VK_MULTIPLY = &H6A '* im Ziffernblock (multiplizieren) VK_ADD = &H6B '+ im Ziffernblock (addieren) VK_SEPARATOR = &H6C 'Separator VK_SUBTRACT = &H6D '- im Ziffernblock (subtrahieren) VK_DECIMAL = &H6E ', im Ziffernblock (Dezimalzeichen) VK_DIVIDE = &H6F '/ im Ziffernblock (dividieren) VK_F1 = &H70 'F1 VK_F2 = &H71 'F2 VK_F3 = &H72 'F3 VK_F4 = &H73 'F4 VK_F5 = &H74 'F5 VK_F6 = &H75 'F6 VK_F7 = &H76 'F7 VK_F8 = &H77 'F8 VK_F9 = &H78 'F9 VK_F10 = &H79 'F10 VK_F11 = &H7A 'F11 VK_F12 = &H7B 'F12 VK_F13 = &H7C 'F13 VK_F14 = &H7D 'F14 VK_F15 = &H7E 'F15 VK_F16 = &H7F 'F16 VK_F17 = &H80 'F17 VK_F18 = &H81 'F18 VK_F19 = &H82 'F19 VK_F20 = &H83 'F20 VK_F21 = &H84 'F21 VK_F22 = &H85 'F22 VK_F23 = &H86 'F23 VK_F24 = &H87 'F24 VK_NUMLOCK = &H90 'NUM LOCK VK_SCROLL = &H91 'Rollen VK_LSHIFT = &HA0 'Linke SHIFT-Taste VK_RSHIFT = &HA1 'Rechte SHIFT-Taste VK_LCONTROL = &HA2 'Linke Strg-Taste VK_RCONTROL = &HA3 'Rechte Strg-Taste VK_LMENU = &HA4 'Linke Menu-Taste VK_RMENU = &HA5 'Rechte Menu-Taste VK_BROWSER_BACK = &HA6 'Browser Zurück VK_BROWSER_FORWARD = &HA7 'Browser Vorwärts VK_BROWSER_REFRESH = &HA8 'Browser Refresh VK_BROWSER_STOP = &HA9 'Browser Stop VK_BROWSER_SEARCH = &HAA 'Browser Suche VK_BROWSER_FAVORITES = &HAB 'Browser Favoriten VK_BROWSER_HOME = &HAC 'Browser Start/Home VK_VOLUME_MUTE = &HAD 'Lautstärke stumm VK_VOLUME_DOWN = &HAE 'Lautstärke Leiser VK_VOLUME_UP = &HAF 'Lautstärke lauter VK_MEDIA_NEXT_TRACK = &HB0 'Nächster Titel VK_MEDIA_PREV_TRACK = &HB1 'Voriger Titel VK_MEDIA_STOP = &HB2 'Titel stoppen VK_MEDIA_PLAY_PAUSE = &HB3 'Wiedergabe/Pause VK_LAUNCH_MAIL = &HB4 'Mail starten VK_LAUNCH_MEDIA_SELECT = &HB5 'Medium wählen VK_LAUNCH_APP1 = &HB6 'Anwendung1 starten VK_LAUNCH_APP2 = &HB7 'Anwendung2 starten VK_OEM_1 = &HBA 'Tastaturabhängig. US-Standard: ;. Deutsch: ü VK_OEM_PLUS = &HBB '+ VK_OEM_COMMA = &HBC ', VK_OEM_MINUS = &HBD '- VK_OEM_PERIOD = &HBE '. VK_OEM_2 = &HBF 'Tastaturabhängig. US-Standard: /. Deutsch: # VK_OEM_3 = &HC0 'Tastaturabhängig. US-Standard: ~. Deutsch: ö VK_OEM_4 = &HDB 'Tastaturabhängig. US-Standard: [. Deutsch: ß VK_OEM_5 = &HDC 'Tastaturabhängig. US-Standard: \. Deutsch: ^ VK_OEM_6 = &HDD 'Tastaturabhängig. US-Standard: ]. Deutsch: ´ VK_OEM_7 = &HDE 'Tastaturabhängig. US-Standard: '. Deutsch: ä VK_OEM_8 = &HDF 'Tastaturabhängig. VK_OEM_102 = &HE2 'Tastaturabhängig. Deutsch: < VK_PROCESSKEY = &HE5 'IME PROCESS (asiatische Tastaturen) End Enum
Function apiTasteUnten(Taste As eKey, Optional jetzt As Boolean = True) As Boolean If jetzt Then apiTasteUnten = GetAsyncKeyState(Taste) And &H8000 'Taste ist aktuell gedrückt Else apiTasteUnten = GetAsyncKeyState(Taste) And &H1 'Taste war seit letzten Aufruf gedrückt End If End Function
Ermittelt die aktuelle Position der Maus. War die Funktion erfolgreich, ist der Rückgabewert größer „0“.
#If VBA7 Then Private Declare PtrSafe Function GetCursorPos Lib "user32" _ (lpPoint As POINT_TYPE) As Long #Else Private Declare Function GetCursorPos Lib "user32" _ (lpPoint As POINT_TYPE) As Long #End If Private Type POINT_TYPE x As Long y As Long End Type
Sub demoMausPos() Dim lpPoint As POINT_TYPE If GetCursorPos(lpPoint) > 0 Then MsgBox "Mausposition:" & vbLf & lpPoint.x & "," & lpPoint.y End If End Sub