IsNull (n-l-i) Gast
|
Verfasst am: So Apr 13, 2008 2:47 pm Titel: GenerateVirtualKeyCode pure AHK Lösung |
|
|
Eine (für mich) nützliche Funktion. Oft wird hier von ANfängern gefragt, wie man denn spezielle Tasten ihrer Tastaturen ansprechen kann; hier eine pure AHK Lösung um die Virtuellen Keycodes anzuzeigen. Es wird auch gleich ein lauffähiger Send-aufruf generiert.
Ich werde diesen Code evtl. noch erweitern dass auch Maus Knöpfe und andere Geräte erfasst werden können....
Original Thread: http://forum.securityvision.ch/viewtopic.php?f=2&t=81&p=388#p388
| Zitat: |
Es gibt verschiedene Wege, an den Viruellen Keycode zu kommen. Welcher gerade bei speziellen "Knöpfen"/Tasten benötigt wird. Dieses Skript hier stellt eine pure AHK Lösung dar, welches gleich lauffähige "send" Aufrufe generiert um diese spezielleren Key simpel aufzurufen.
Dies hier stellt lediglich ein proof of concept dar, da es lediglich ein zwischenergebniss meiner Dll/Hook/RCB Lernvorgänge bz. Tests ist. Funktioniert, könnte aber noch um einiges verbessert werden...
| Code: |
/******************************************************************************************************************
Name ... GenerateVirtualKeyCode
ver ... Beta
coded by ... IsNull (rcb-hook by sean)
__________________________________________________________________________________________________________________
Grundkonzept des rcb-Hooks basiert auf Seans post hier:
http://www.autohotkey.com/forum/post-127490.html#127490
*******************************************************************************************************************
*/
#NoEnv
#Persistent
OnExit, cleanup
SendMode Input
SetWorkingDir %A_ScriptDir%
;_________________________________________________________________________________________________________________
GlobalLogBuffer := ""
;Erstellt einen Hook, der auf eine Callback Funktion in diesem Skript zeigt
hHookKeybd := SetWindowsHookEx(WH_KEYBOARD_LL := 13, RegisterCallback("KeyboardHook", "Fast"))
;********************* MINIMALES GUI *******************************************************************
GUI, Add, Edit, +ReadOnly w100 h20 hwndKeyLogWindow_ID vKeyLogWindow
GUI, Add, Text,xp yp+30,Working AHK Code:
GUI, Add, Edit, +ReadOnly xp yp+20 w400 h300 hwndCODELogWindow_ID vCODELogWindow
gui, show
ControlSetText, , press a key, ahk_id %KeyLogWindow_ID%
Return
/*
************************************END OF AUTOEXECUTION**********************************************************
*/
CleanUP:
UnhookWindowsHookEx(hHookKeybd)
exitapp
/*****************************************************************************************************************
CallBack Funktion; (für Keyboard hook)
******************************************************************************************************************
*/
KeyboardHook(nCode, wParam, lParam)
{
global
Critical
If (!nCode){
vkCode := NumGet(lParam+0, 0)
scCode := NumGet(lParam+0, 4)
SetFormat, integer, hex ;set Format to hex
vkCode += 0
scCode += 0
ControlSetText, , vk%vkCode%sc%scCode%`n, ahk_id %KeyLogWindow_ID%
GlobalLogBuffer .= "Send {vk" . vkCode . "sc" . scCode . "}" . "`r`n" ;Hier ist "`r`n" notwendig, da dieses Control "`n" ignoriert.
ControlSetText, , %GlobalLogBuffer%, ahk_id %CODELogWindow_ID%
}
SoundBeep, 800, 100
Return CallNextHookEx(nCode, wParam, lParam)
}
GuiClose:
UnhookWindowsHookEx(hHookKeybd)
exitapp
SetWindowsHookEx(idHook, pfn)
{
Return DllCall("SetWindowsHookEx", "int", idHook, "Uint", pfn, "Uint", DllCall("GetModuleHandle", "Uint", 0), "Uint", 0)
}
UnhookWindowsHookEx(hHook)
{
Return DllCall("UnhookWindowsHookEx", "Uint", hHook)
}
CallNextHookEx(nCode, wParam, lParam, hHook = 0)
{
Return DllCall("CallNextHookEx", "Uint", hHook, "int", nCode, "Uint", wParam, "Uint", lParam)
}
|
hf
IsNul | l |
|