16 thg 10, 2010

Hook Windows = Autoit Xữ Lý $WH_KEYBOARD

Autoit cũng hook đc y chang như VC++ nè
Mà khỏi cần DLL lun đó nha ^^! hj`hj`

Có ai pro thì vào Phát triển thêm đi nào ^^!
Bật/Tắt Số Dòng | Hiện/Ẩn Code | Chọn tất cả

1. #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
2.
3. #include
4. #include
5. #include
6.
7. Opt('MustDeclareVars', 1)
8.
9. Global $hHook, $hStub_KeyProc, $buffer = ""
10.
11. _Main()
12.
13. Func _Main()
14. OnAutoItExitRegister("Cleanup")
15.
16. Local $hmod
17.
18. $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
19. $hmod = _WinAPI_GetModuleHandle(0)
20. $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
21.
22. MsgBox(4096, "", "Click OK, then in notepad type..." & _
23. @LF & @LF & "Jon" & @LF & "AutoIt" & @LF & @LF & "Press Esc to exit script")
24.
25. Run("Notepad")
26. WinWait("Untitled -")
27. WinActivate("Untitled -")
28.
29. While 1
30. Sleep(10)
31. WEnd
32. EndFunc ;==>_Main
33.
34. Func EvaluateKey($keycode)
35. If (($keycode > 64) And ($keycode < 91)) _ ; a - z 36. Or (($keycode > 96) And ($keycode < 123)) _ ; A - Z 37. Or (($keycode > 47) And ($keycode < 58)) Then ; 0 - 9 38. $buffer &= Chr($keycode) 39. Switch $buffer 40. Case "Jon" 41. ToolTip("What can you say?") 42. Case "AutoIt" 43. ToolTip("AutoIt Rocks") 44. EndSwitch 45. ElseIf ($keycode > 159) And ($keycode < 164) Then 46. Return 47. ElseIf ($keycode = 27) Then ; esc key 48. Exit 49. Else 50. $buffer = "" 51. EndIf 52. EndFunc ;==>EvaluateKey
53.
54. ;===========================================================
55. ; callback function
56. ;===========================================================
57. Func _KeyProc($nCode, $wParam, $lParam)
58. Local $tKEYHOOKS
59. $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
60. If $nCode < 0 Then 61. Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) 62. EndIf 63. If $wParam = $WM_KEYDOWN Then 64. EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode")) 65. Else 66. Local $flags = DllStructGetData($tKEYHOOKS, "flags") 67. Switch $flags 68. Case $LLKHF_ALTDOWN 69. ConsoleWrite("$LLKHF_ALTDOWN" & @CRLF) 70. Case $LLKHF_EXTENDED 71. ConsoleWrite("$LLKHF_EXTENDED" & @CRLF) 72. Case $LLKHF_INJECTED 73. ConsoleWrite("$LLKHF_INJECTED" & @CRLF) 74. Case $LLKHF_UP 75. ConsoleWrite("$LLKHF_UP: scanCode - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & "vkCode - " & DllStructGetData($tKEYHOOKS, "vkCode") & @CRLF) 76. EndSwitch 77. EndIf 78. Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam) 79. EndFunc ;==>_KeyProc
80.
81. Func Cleanup()
82. _WinAPI_UnhookWindowsHookEx($hHook)
83. DllCallbackFree($hStub_KeyProc)
84. EndFunc ;==>Cleanup
85.


Cám Ơn bài viết của emyeusss7 Chuyển Leas

Sửa lần cuối bởi LeeSai vào ngày Chủ nhật 07 Tháng 2, 2010 3:51 pm với 2 lần sửa trong tổng số.

Không có nhận xét nào:

Đăng nhận xét