當前位置:編程學習大全網 - 源碼下載 - 監控鍵盤源代碼

監控鍵盤源代碼

只用vb不容易。需要使用全局鉤子,放在dll文件中,但是vb不太容易做動態鏈接庫文件,我給妳壹個代碼參考。

表單代碼

選項顯式

私有子窗體_Load()

出錯時繼續下壹步

SetKeyboardHook Me.hWnd,WM_USER

如果錯誤。號碼& lt& gt那麽0

MsgBox "請先將KeybHook.dll復制到Windows的路徑下!",VB臨界

結束

如果…就會結束

出錯時轉到0

prevWndProc = GetWindowLong(me . hwnd,GWL_WNDPROC)

SetWindowLong Me.hWnd,GWL_WNDPROC,WNDPROC地址

末端接頭

私有子窗體_Unload(取消為整數)

釋放鍵盤掛鉤

SetWindowLong Me.hWnd,GWL_WNDPROC,prevWndProc

末端接頭

標準模塊

選項顯式

公共常數GWL_WNDPROC = (-4)

公共Const WM _ USER = & ampH400

將函數CallWindowProc Lib“user 32”別名“CallWindowProcA”(ByVal lpPrevWndFunc As Long、ByVal hWnd As Long、ByVal Msg As Long、ByVal wParam As Long、ByVal lParam As Long)聲明為Long

將函數GetWindowLong Lib“user 32”別名“GetWindowLongA”(ByVal hWnd為Long,ByVal nIndex為Long)聲明為Long

將函數SetWindowLong Lib“user 32”別名“SetWindowLongA”(ByVal hWnd為Long,ByVal nIndex為Long,ByVal dwNewLong為Long)聲明為Long

將函數set keyboard hook Lib“KeybHook”(ByVal hwnd post為Long,ByVal Msg為Long)聲明為Long

將函數release keyboard hook Lib“KeybHook”()聲明為Long

Public prevWndProc As Long

函數WndProc(ByVal hWnd為Long,ByVal Msg為Long,ByVal wParam為Long,ByVal lParam為Long)為Long

如果Msg = WM_USER,則

表單1。List1。AddItem " wParam = " & ampwParam & amp",lParam = " & amp十六進制(lParam)

表單1。List1。ListIndex = Form1。List1。新指數

如果…就會結束

WndProc = CallWindowProc(prevWndProc,hWnd,Msg,wParam,lParam)

結束功能

用來制作dll的c代碼

# include & ltwindows.h & gt

# include & ltwindowsx.h & gt

# include & lttchar.h & gt

HINSTANCE g _ hinstDll = NULL

#pragma data_seg("。drectve”)

static char szLinkDirectiveShared[]= "-section:Shared,rws ";

#pragma data_seg()

#pragma data_seg("Shared ")

HHOOK g _ hhook = NULL

HWND g _ hwndPost = NULL

UINT g _ uMsgNotify = WM _ USER

#pragma data_seg()

靜態LRESULT WINAPI keyboard hook _ hook proc(

int nCode,

WPARAM wParam,

LPARAM lParam)

{

LRESULT LRESULT = CallNextHookEx(g _ hhook,nCode,wParam,lParam);

if (nCode == HC_ACTION)

{

PostMessage(g_hwndPost,g_uMsgNotify,wParam,lParam);

}

return(lResult);

}

BOOL WINAPI set keyboard hook(HWND HWND post,UINT Msg)

{

HHOOK hhook

如果(g _ hhook!= NULL)返回(FALSE);

g _ hwndPost = hWndPost

g _ uMsgNotify = Msg

睡眠(0);

hhook = SetWindowsHookEx(WH _鍵盤,KeyboardHook_HookProc,g_hinstDll,0);

InterlockedExchange(PLONG)& amp;g_hhook,(長)hhook);

return(g_hhook!= NULL);

}

BOOL WINAPI ReleaseKeyboardHook()

{

BOOL fOK = TRUE

如果(g _ hhook!=空)

{

fOK = UnhookWindowsHookEx(g _ hhook);

g _ hhook = NULL

}

退貨(fOK);

}

BOOL WINAPI DllMain(h instance hinst dll,DWORD fdwReason,LPVOID lpvReserved)

{

開關(fdwReason)

{

案例DLL_PROCESS_ATTACH:

g _ hinstDll = hinstDll

打破;

}

返回(真);

}

  • 上一篇:屏幕搜索源代碼
  • 下一篇:怎麽做財務盈利分析啊
  • copyright 2024編程學習大全網