鉤子(VFB教程4-5)

  勇芳 2018-2-19 7011

此處為VisualFreeBasic編程教程(從零開始學或VB進階)的子章節部分,全部目錄點鏈接。

Common Shared  KeyboardHandle As HHOOK
Function HookKeyboard(ByVal TID As Ulong ) As HHOOK  '定義鍵盤鉤子
     KeyboardHandle = SetWindowsHookEx(WH_KEYBOARD, @KeyboardCallback, App.hInstance, TID)
    '1 鉤子類型
    '2 回調函數地址 
    '3 實例句柄
    '4 線程ID  =0 鉤全部
    Function=KeyboardHandle
End Function
Common Shared MouseboardHandle As HHOOK
Function HookMouBoard(ByVal TID As Ulong ) As HHOOK '定義鼠標鉤子
 MouseboardHandle = SetWindowsHookEx(WH_MOUSE, @MouseboardCallback, App.hInstance, TID)

'1 鉤子類型
'2 回調函數地址
'3 實例句柄
'4 線程ID  =0 鉤全部
Function=MouseboardHandle
End Function

啟動窗口中放

HookKeyboard 0 '攔截全部  HookKeyboard GetWindowThreadProcessId(窗口句柄,@i) 只攔截自己軟件
HookMouBoard 0 '攔截全部

關閉窗口中放

UnhookWindowsHookEx(KeyboardHandle)
UnhookWindowsHookEx(MouseboardHandle)

鼠標鉤子返回

Function MouseboardCallback(ByVal Code As Long, ByVal wParam As wParam, ByVal lParam As lParam) As Long
    If Code=HC_ACTION Then
    
    End If
   Function = CallNextHookEx(MouseboardHandle, Code, wParam, lParam)

End Function

鍵盤鉤子返回

Function KeyboardCallback(ByVal nCode As Long, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
  If nCode = HC_ACTION Then
      Dim aa As String =Bin(lParam,32) '第1個 =0 按下, =1 釋放
  End If
  Function = CallNextHookEx(KeyboardHandle, nCode, wParam, lParam)

End Function

其它鉤子

SetWindowsHookEx(
  idHook: Integer;   {鉤子類型}
  lpfn: TFNHookProc; {函數指針}
  hmod: HINST;       {包含鉤子函數的模塊(EXE、DLL)句柄; 一般是 HInstance; 如果是當前線程這里可以是 0}
  dwThreadId: DWORD  {關聯的線程; 可用 GetCurrentThreadId 獲取當前線程; 0 表示是系統級鉤子}
): HHOOK;            {返回鉤子的句柄; 0 表示失敗}

//鉤子類型 idHook 選項:
WH_MSGFILTER       = -1; {線程級; 截獲用戶與控件交互的消息}
WH_JOURNALRECORD   = 0;  {系統級; 記錄所有消息隊列從消息隊列送出的輸入消息, 在消息從隊列中清除時發生; 可用于宏記錄}
WH_JOURNALPLAYBACK = 1;  {系統級; 回放由 WH_JOURNALRECORD 記錄的消息, 也就是將這些消息重新送入消息隊列}
WH_KEYBOARD        = 2;  {系統級或線程級; 截獲鍵盤消息}
WH_GETMESSAGE      = 3;  {系統級或線程級; 截獲從消息隊列送出的消息}
WH_CALLWNDPROC     = 4;  {系統級或線程級; 截獲發送到目標窗口的消息, 在 SendMessage 調用時發生}
WH_CBT             = 5;  {系統級或線程級; 截獲系統基本消息, 譬如: 窗口的創建、激活、關閉、最大最小化、移動等等}
WH_SYSMSGFILTER    = 6;  {系統級; 截獲系統范圍內用戶與控件交互的消息}
WH_MOUSE           = 7;  {系統級或線程級; 截獲鼠標消息}
WH_HARDWARE        = 8;  {系統級或線程級; 截獲非標準硬件(非鼠標、鍵盤)的消息}
WH_DEBUG           = 9;  {系統級或線程級; 在其他鉤子調用前調用, 用于調試鉤子}
WH_SHELL           = 10; {系統級或線程級; 截獲發向外殼應用程序的消息}
WH_FOREGROUNDIDLE  = 11; {系統級或線程級; 在程序前臺線程空閑時調用}
WH_CALLWNDPROCRET  = 12; {系統級或線程級; 截獲目標窗口處理完畢的消息, 在 SendMessage 調用后發生}



因國家互聯網安全管理要求,關閉回帖功能。大家需要留言,請使用【勇芳軟件客服】即時聯系勇芳點此打開->>勇芳軟件客服
返回
聯系勇芳
一个人看的www视频播放中文_2012中文字幕电影_亚洲国产成人高清在线观看_中文字幕天堂最新版在线网