Hi,
ich habe folgenden Scripts, wurde glaub von BugFix mal geschrieben.
Spoiler anzeigen
#include <WinAPI.au3>
#Include <WindowsConstants.au3>
Global $hHookKeyboard, $pStub_KeyProc
Global Const $VK_WIN_LEFT = 0x5B
Global Const $VK_WIN_RIGHT = 0x5C
Global Const $Key_NONE = 0x0
$pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
$hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
While 1
Sleep(10)
WEnd
Func OnAutoITExit()
DllCallbackFree($pStub_KeyProc)
_WinAPI_UnhookWindowsHookEx($hHookKeyboard)
EndFunc ;==>OnAutoITExit
Func _KeyProc($nCode, $wParam, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
If ($wParam = $WM_KEYDOWN) And ($vkCode = $VK_WIN_LEFT Or $vkCode = $VK_WIN_RIGHT) Then
DllCall('user32.dll', 'int', 'keybd_event', 'int', $Key_NONE, 'int', 0, 'int', 0, 'ptr', 0)
Return -1
EndIf
Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
In dem Fall wird per Hook die Win-Taste sowohl die Linke als auch die Rechte ins "nichts" umgeleitet.
Das gleiche habe ich nun versucht für ALT-Tab hinzubekommen und habe einfach mal versucht die ALT und ALT GR Taste umzuleiten.
Spoiler anzeigen
#include <WinAPI.au3>
#Include <WindowsConstants.au3>
Global $hHookKeyboard, $pStub_KeyProc
Global Const $VK_WIN_LEFT = 0x5B
Global Const $VK_WIN_RIGHT = 0x5C
Global Const $Key_NONE = 0x0
;Die HEX für die beiden Tasten
Global Const $VK_ALT_LEFT = 0xA4
Global Const $VK_ALT_RIGHT = 0xA2
$pStub_KeyProc = DllCallbackRegister("_KeyProc", "int", "int;ptr;ptr")
$hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($pStub_KeyProc), _WinAPI_GetModuleHandle(0), 0)
While 1
Sleep(10)
WEnd
Func OnAutoITExit()
DllCallbackFree($pStub_KeyProc)
_WinAPI_UnhookWindowsHookEx($hHookKeyboard)
EndFunc ;==>OnAutoITExit
Func _KeyProc($nCode, $wParam, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
Local $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
Local $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
;In der IF wurden die zwei Tasten hinzugefügt
If ($wParam = $WM_KEYDOWN) And ($vkCode = $VK_WIN_LEFT Or $vkCode = $VK_WIN_RIGHT Or $vkCode = $VK_ALT_LEFT Or $vkCode = $VK_ALT_RIGHT) Then
DllCall('user32.dll', 'int', 'keybd_event', 'int', $Key_NONE, 'int', 0, 'int', 0, 'ptr', 0)
Return -1
EndIf
Return _WinAPI_CallNextHookEx($hHookKeyboard, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Leider ist das aber erfolglos und ALT+Tab funktioniert weiterhin normal.