亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 鍵鼠采集.txt

?? 一個收集鍵盤鼠標動作
?? TXT
字號:



    很多的教學軟件或系統監視軟件可以自動記錄回放用戶的輸入文字或點擊按鈕等操作操作,這個功能的實現是使用 
了Windows的Hook函數。本文介紹如何通過使用VB來實現鼠標鍵盤操作的紀錄和回放。 
    Windows提供API函數SetwindowsHookEx來建立一個Hook,通過這個函數可以將一個程序添加到Hook鏈中監視Windows 
消息,函數語法為: 
    Public Declare Function SetWindowsHookEx Lib "user32" _ 
        Alias "SetWindowsHookExA" _ 
        (ByVal idHook As Long, _ 
        ByVal lpfn As Long, _ 
        ByVal hmod As Long, _ 
        ByVal dwThreadId As Long) As Long 
    其中參數idHook指定建立的監視函數類型。通過Windows MSDN幫助可以看到,SetwindowsHookEx函數提供15種不同 
的消息監視類型,在這里我們將使用WH_JOURNALRECORD和WH_JOURNALPLAYBACK來監視鍵盤和鼠標操作。參數lpfn指定消 
息函數,在相應的消息產生后,系統會調用該函數并將消息值傳遞給該函數供處理。函數的一般形式為: 
    Hookproc (code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT stdcall; 
    其中code為系統指示標記,wParam和lParam為附加參數,根據不同的消息監視類型而不同。只要在程序中建立這樣 
一個函數再通過SetwindowsHookEx函數將它加入到消息監視鏈中就可以處理消息了。 
    在不需要監視系統消息時需要調用提供UnHookWindowsHookEx來解除對消息的監視。 
    WH_JOURNALRECORD和WH_JOURNALPLAYBACK類型是兩種相反的Hook類型,前者獲得鼠標、鍵盤動作消息,后者回放鼠 
標鍵盤消息。所以在程序中我們需要建立兩個消息函數,一個用于紀錄鼠標鍵盤操作并保存到一個數組中,另一個用于 
將保存的操作返給系統回放。 
    下面是具體的程序實現:首先建立一個新工程,在Form1中加入三個CommandButton控件用于控制消息鉤子,另外還 
可以增加若干Command或者TextBox控件用于檢驗操作回放的效果。然后在工程中增加一個模塊文件,在模塊中加入以下 
定義和代碼: 

Option Explicit 

Public Type EVENTMSG 
        message As Long 
        paramL As Long 
        paramH As Long 
        time As Long 
        hwnd As Long 
End Type 

Public Declare Function CallNextHookEx Lib "user32" _ 
        (ByVal hHook As Long, _ 
        ByVal ncode As Long, _ 
        ByVal wParam As Long, _ 
        ByVal lParam As Long) As Long 
Public Declare Function SetWindowsHookEx Lib "user32" _ 
        Alias "SetWindowsHookExA" _ 
        (ByVal idHook As Long, _ 
        ByVal lpfn As Long, _ 
        ByVal hmod As Long, _ 
        ByVal dwThreadId As Long) As Long 
Public Declare Sub CopyMemoryT2H Lib "kernel32" _ 
        Alias "RtlMoveMemory" _ 
        (ByVal Dest As Long, _ 
        Source As EVENTMSG, _ 
        ByVal Length As Long) 
Public Declare Sub CopyMemoryH2T Lib "kernel32" _ 
        Alias "RtlMoveMemory" _ 
        (Dest As EVENTMSG, _ 
        ByVal Source As Long, _ 
        ByVal Length As Long) 
Public Declare Function UnhookWindowsHookEx Lib "user32" _ 
        (ByVal hHook As Long) As Long 

Public Const WH_JOURNALPLAYBACK = 1 
Public Const WH_JOURNALRECORD = 0 
Public Const HC_SYSMODALOFF = 5 
Public Const HC_SYSMODALON = 4 
Public Const HC_SKIP = 2 
Public Const HC_GETNEXT = 1 
Public Const HC_ACTION = 0 

Public EventArr(1000) As EVENTMSG 
Public EventLog As Long 
Public PlayLog As Long 
Public hHook As Long 
Public hPlay As Long 
Public recOK As Long 
Public canPlay As Long 
Public bDelay As Boolean 

Public Function HookProc(ByVal iCode As Long, ByVal wParam As Long, _ 
        ByVal lParam As Long) As Long 
    Dim Result As Long 
     
    recOK = 1 
    Result = 0 

    If iCode < 0 Then   'iCode小于0必須直接調用下一個消息鉤子函數 
        Result = CallNextHookEx(hHook, iCode, wParam, lParam) 
    ElseIf iCode = HC_SYSMODALON Then   '不允許紀錄 
        recOK = 0 
    ElseIf iCode = HC_SYSMODALOFF Then  '允許紀錄 
        recOK = 1 
    ElseIf ((recOK > 0) And (iCode = HC_ACTION)) Then 
        '將消息紀錄在紀錄隊列中 
        CopyMemoryH2T EventArr(EventLog), lParam, Len(EventArr(EventLog)) 
        EventLog = EventLog + 1 
        If EventLog >= 1000 Then 
            '當紀錄大于1000后釋放消息鉤子 
            UnhookWindowsHookEx hHook 
        End If 
    End If 
    HookProc = Result 
End Function 

Public Function PlaybackProc(ByVal iCode As Long, ByVal wParam As Long, _ 
        ByVal lParam As Long) As Long 
    Dim Result As Long 
     
    canPlay = 1 
    Result = 0 

    If iCode < 0 Then   'iCode小于0必須直接調用下一個消息鉤子函數 
        Result = CallNextHookEx(hPlay, iCode, wParam, lParam) 
    ElseIf iCode = HC_SYSMODALON Then   '不允許回放 
        canPlay = 0 
    ElseIf iCode = HC_SYSMODALOFF Then  '允許回放 
        canPlay = 1 
    ElseIf ((canPlay = 1) And (iCode = HC_GETNEXT)) Then 
        If bDelay Then 
            bDelay = False 
            Result = 50 
        End If 
        '從紀錄隊列中取出消息并賦予lParam指針指向的EVENTMSG區域 
        CopyMemoryT2H lParam, EventArr(PlayLog), Len(EventArr(EventLog)) 
    ElseIf ((canPlay = 1) And (iCode = HC_SKIP)) Then 
        bDelay = True 
        PlayLog = PlayLog + 1 
    End If 
     
    If PlayLog >= EventLog Then 
        UnhookWindowsHookEx hPlay 
    End If 
    PlaybackProc = Result 
End Function 

    在Form1的代碼窗口中加入以下代碼: 
Option Explicit 

Private Sub Command1_Click() 
    EventLog = 0 
    hHook = SetWindowsHookEx(WH_JOURNALRECORD, AddressOf HookProc, _ 
            App.hInstance, 0) 
    Command2.Enabled = True 
    Command1.Enabled = False 
End Sub 

Private Sub Command2_Click() 
    UnhookWindowsHookEx hHook 
    hHook = 0 

    Command1.Enabled = True 
    Command2.Enabled = False 
    Command3.Enabled = True 
End Sub 

Private Sub Command3_Click() 
    PlayLog = 0 
    hPlay = SetWindowsHookEx(WH_JOURNALPLAYBACK, AddressOf PlaybackProc, _ 
            App.hInstance, 0) 
    Command3.Enabled = False 
End Sub 

Private Sub Form_Load() 
    Command1.Caption = "紀錄" 
    Command2.Caption = "停止" 
    Command3.Caption = "回放" 
    Command2.Enabled = False 
    Command3.Enabled = False 
End Sub 

    運行程序,點擊“紀錄”按鈕,然后在TextBox中輸入一些文字或者在窗口上移動光標后再按“停止”鍵停止消息 
紀錄,然后按“回放”按鈕,可以看到剛才鼠標鍵盤的操作被絲毫不差的回放了出來。 
    從上面的程序可以看到:通過WH_JOURNALRECORD可以建立一個鼠標鍵盤消息鉤子,當每一個鼠標鍵盤消息產生時被 
鉤子函數被調用。在鉤子函數中可以將消息保存在消息事件隊列中。然后通過WH_JOURNALPLAYBACK建立消息回放鉤子, 
當每一次系統可以回放消息時就會調用鉤子函數,在鉤子函數中就可以從消息隊列中取出原來紀錄的消息返回給系統。 
這樣就實現了鼠標鍵盤操作的紀錄和回放。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在线观看视频| 国产精品丝袜91| 日韩三级精品电影久久久| 91蝌蚪porny九色| 91色porny蝌蚪| 欧美日韩久久一区二区| 精品少妇一区二区三区 | 精品国产一二三区| 国产日韩精品一区二区三区在线| 日本一区二区久久| 亚洲一级二级三级| 精品一区二区三区蜜桃| 波多野结衣在线一区| 色婷婷亚洲精品| 精品日韩一区二区三区免费视频| 中文字幕免费观看一区| 一区二区日韩电影| 性感美女久久精品| 成人av综合一区| 91精品国产91热久久久做人人| 国产精品免费人成网站| 亚洲一区二区欧美| av在线不卡电影| www欧美成人18+| 图片区小说区区亚洲影院| 成人晚上爱看视频| 精品电影一区二区三区| 一区二区三区在线免费播放| 国产精品996| 欧美xxxxx牲另类人与| 亚洲视频免费在线| www.欧美亚洲| 国产精品美女久久久久久久久久久 | 欧美老女人在线| 91麻豆精品91久久久久久清纯| 日韩一二三区视频| 欧美高清在线精品一区| 国产午夜精品一区二区三区嫩草| 欧美系列日韩一区| 亚洲欧洲精品一区二区三区| 国产一区二区精品久久| 日韩欧美一二区| 日本中文字幕一区| 欧美浪妇xxxx高跟鞋交| 亚洲成人在线观看视频| 在线观看免费一区| 午夜亚洲福利老司机| 欧美日韩在线三区| 中文字幕电影一区| 麻豆精品视频在线观看| 欧美一区二区啪啪| 亚洲五月六月丁香激情| 色哟哟欧美精品| 亚洲尤物视频在线| 欧美一卡二卡在线| 国产做a爰片久久毛片| 精品av综合导航| 国产91精品一区二区麻豆亚洲| 日本一区二区免费在线| 91蜜桃视频在线| 日日摸夜夜添夜夜添精品视频 | 亚洲欧美一区二区视频| 一本久久综合亚洲鲁鲁五月天| 亚洲国产另类精品专区| 在线播放日韩导航| 成人性生交大片免费看中文网站| 中文字幕欧美激情| 91精品国产乱码久久蜜臀| 蜜臀99久久精品久久久久久软件| 久久只精品国产| 欧美在线观看视频在线| 国产在线视视频有精品| 亚洲免费色视频| 欧美变态凌虐bdsm| 欧美三级视频在线观看| 国产精品一区久久久久| 亚洲小说春色综合另类电影| 欧美国产成人在线| 在线综合视频播放| 色婷婷精品大在线视频| 国产福利精品一区| 亚洲一区二区精品3399| 久久一区二区视频| 欧美一区二区三区四区高清| 成人av在线网| 国产一区二区主播在线| 午夜精品一区二区三区电影天堂| 久久中文娱乐网| 精品久久久久久综合日本欧美| 91国模大尺度私拍在线视频| av一区二区不卡| 国产主播一区二区三区| 天堂蜜桃一区二区三区| 亚洲女人的天堂| 国产精品久久久久久久久动漫 | 国产精品久久久久久久久动漫 | 极品销魂美女一区二区三区| 婷婷开心激情综合| 亚洲视频一区二区在线| 国产亚洲污的网站| 日韩精品专区在线| 欧美一区二区三区视频| 欧美视频一区二| 色香蕉久久蜜桃| 91黄色在线观看| 欧美伊人久久久久久久久影院| 成人av免费在线| 91亚洲精品一区二区乱码| 99国产精品视频免费观看| 色一情一乱一乱一91av| 精品三级在线观看| 精品国产伦一区二区三区观看方式 | 欧亚一区二区三区| 捆绑紧缚一区二区三区视频| 亚洲小说欧美激情另类| 日韩电影在线一区二区| 国产在线视频一区二区三区| 99国产精品一区| 欧美一级黄色片| 欧美国产精品中文字幕| 亚洲卡通欧美制服中文| 日韩av中文字幕一区二区三区| 国产精品一区在线观看乱码| 99精品一区二区| 欧美精品一区男女天堂| 亚洲男帅同性gay1069| 亚洲欧美成aⅴ人在线观看| 蜜桃视频一区二区| 色婷婷av一区二区三区大白胸| 欧美草草影院在线视频| 伊人婷婷欧美激情| 成人h精品动漫一区二区三区| 欧美日韩成人激情| 一区二区三区欧美在线观看| 九色综合狠狠综合久久| 日韩免费福利电影在线观看| 日韩美女啊v在线免费观看| 国产精品国产a| 天堂精品中文字幕在线| 一区二区三区在线观看动漫| 玖玖九九国产精品| 激情综合色综合久久综合| 99免费精品视频| 欧美日韩综合在线| 日本一区二区综合亚洲| 国产一区视频在线看| 日韩欧美123| 亚洲成a人在线观看| 成人精品视频一区二区三区| 日韩欧美一级特黄在线播放| 亚洲男人的天堂在线观看| 成人午夜视频免费看| 欧美视频中文字幕| ...xxx性欧美| 国精产品一区一区三区mba桃花| 欧美高清dvd| 老司机精品视频一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 亚洲成av人片在线观看无码| 色噜噜夜夜夜综合网| 亚洲第一成年网| 日韩欧美国产wwwww| 韩国女主播一区| 最新日韩av在线| 在线一区二区视频| 亚洲精品久久久久久国产精华液| 91一区二区三区在线观看| 亚洲色图视频网| 欧美老女人在线| 国产乱一区二区| 国产三区在线成人av| 色欧美乱欧美15图片| 亚洲成人激情自拍| 欧美成人精品福利| 日韩电影在线一区| 国产人成一区二区三区影院| av中文字幕不卡| 亚洲国产日韩精品| 久久久亚洲精华液精华液精华液 | 波多野结衣视频一区| 美女视频黄 久久| 国产肉丝袜一区二区| 91精品福利在线| 国产成人啪免费观看软件| 亚洲激情图片小说视频| 精品国产青草久久久久福利| 91网站在线播放| 国产精品一区免费在线观看| 亚洲宅男天堂在线观看无病毒| 久久夜色精品国产噜噜av| 欧美日韩免费观看一区三区| av在线一区二区| 紧缚捆绑精品一区二区| 亚洲综合在线观看视频| 国产精品素人视频| 日韩精品资源二区在线| 成人v精品蜜桃久久一区| 精品一区二区三区不卡| 日韩成人一级大片| 亚洲精品少妇30p|