Hallo, ich würde gerne die WM_KEYUP Message auf einer bestimmten Taste komplett für das System verschlucken. Es soll also simuliert werden dass die Taste weiterhin gedrückt ist obwohl ich sie bereits losgelassen habe. Beim erneuten Drücken soll dann die WM_KEYUP Message wieder durchgelassen werden damit die Taste wieder "gelöst" werden kann. Ich hoffe es ist verständlich wie ich das meine.
Im folgendem Skript habe ich versucht mit Hooks zu arbeiten, jedoch scheint dies nicht ganz zu klappen. Die Versuchstaste ist hier das "F":
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\MyAutoIt3_Blue.ico
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
#include <Misc.au3>
#include <WinAPI.au3>
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
Opt('TrayAutoPause', 0)
Opt('TrayMenuMode', 1)
Global Const $g_sKey = _
'ML8JC05IzZlvugyW' & _
'9kKUesT6aBENBbVc' & _
'dUJ56fFrHHkpp7zg' & _
'oHJrD7mOslRw7Oeh'
_Singleton($g_sKey)
[/autoit][autoit][/autoit][autoit]; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit][autoit][/autoit][autoit]Global $g_idExit = TrayCreateItem('Exit')
[/autoit][autoit][/autoit][autoit]; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit][autoit][/autoit][autoit]Global $g_hLowLevelKeyboardProc = DllCallbackRegister(_LowLevelKeyboardProc, 'lresult', 'int;wparam;lparam')
Global $g_hModuleHandle = _WinAPI_GetModuleHandle(0)
Global $g_hHookKeyboard = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($g_hLowLevelKeyboardProc), $g_hModuleHandle)
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit][autoit][/autoit][autoit]While True
Switch TrayGetMsg()
Case $g_idExit
_Exit()
EndSwitch
WEnd
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit][autoit][/autoit][autoit]Func _LowLevelKeyboardProc($nCode, $wParam, $lParam)
Local Static $bRun = False
Local $tKey = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($g_hHookKeyboard, $nCode, $wParam, $lParam)
If $wParam = $WM_KEYDOWN Then
If $tKey.vkCode = 0x46 And Not $bRun Then
$bRun = Not $bRun
Return
EndIf
EndIf
If $wParam = $WM_KEYUP Then
If $tKey.vkCode = 0x46 Then
ConsoleWrite($bRun)
If $bRun Then Return
EndIf
EndIf
Return _WinAPI_CallNextHookEx($g_hHookKeyboard, $nCode, $wParam, $lParam)
EndFunc
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +0
[/autoit][autoit][/autoit][autoit]Func _Exit()
_WinAPI_UnhookWindowsHookEx($g_hHookKeyboard)
DllCallbackFree($g_hLowLevelKeyboardProc)
Exit
EndFunc
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
[/autoit]Hat jemand eine Idee für mich?