-
hook
-
-
-
- #include <vcl.h> //原有BCB 头文件
- #include <windows.h> //原有window 头文件
- #pragma hdrstop
- #pragma argsused
-
- const int WM_KEYHOOK = WM_USER+100;
-
-
- HHOOK hHook;
- HWND hAppWnd;
- HINSTANCE inst;
-
-
- extern "C" {
- __declspec(dllexport) __stdcall void SetHook(void);
- __declspec(dllexport) __stdcall void RemoveHook(void);
- }
-
-
- LRESULT CALLBACK KeyboardProc(int, WPARAM, LPARAM);
-
-
- int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
- {
- inst = hinst;
-
- switch (reason)
- {
- case DLL_PROCESS_ATTACH :
-
- hAppWnd = ::FindWindow("TKeyHookForm", 0);
- break;
-
- case DLL_PROCESS_DETACH:
- break;
-
- case DLL_THREAD_ATTACH:
- break;
-
- case DLL_THREAD_DETACH:
- break;
- }
- return 1;
- }
-
-
- void __stdcall SetHook(void)
- {
- if(hHook == NULL)
- {
- hHook = ::SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, inst, 0);
-
- if(hHook == NULL)
- MessageBox(NULL, "Sorry! 无法挂上Hook。", "Hook DLL", MB_OK);
- else
- ::TextOut(GetDC(0),10,10,"挂上Hook。",10);
- }
- }
-
-
- void __stdcall RemoveHook(void)
- {
- if(hHook != NULL)
- {
- if(::UnhookWindowsHookEx(hHook) != FALSE)
- {
- hHook = NULL;
- ::TextOut(GetDC(0),50,10,"释放Hook。",10);
- }
- else
- MessageBox(NULL, "Sorry! 无法释放Hook。", "Hook DLL", MB_OK);
- }
- else
- ::TextOut(GetDC(0),80,10,"Hook isn't NULL",16);
- }
-
-
- LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
- {
-
- if((nCode < 0) || nCode == HC_NOREMOVE)
- return ::CallNextHookEx(hHook, nCode, wParam, lParam);
-
- if(lParam & 0x40000000)
- return ::CallNextHookEx(hHook, nCode, wParam, lParam);
-
- if(hAppWnd != NULL)
- SendMessage(hAppWnd, WM_KEYHOOK, wParam, lParam);
-
- return ::CallNextHookEx(hHook, nCode, wParam, lParam);
- }
-
-
相关阅读:
模板实参推断
Koa2介绍及环境搭建
nodejs之http.request
nodejs请求json数据
nodejs之url模块
Nodejs之querystring 查询字符串
将导航条设置成透明的
10.12.1 安装cocoapods及使用详解
UIViewAnimation动画
iPhone屏幕尺寸、分辨率及适配
-
原文地址:https://www.cnblogs.com/xe2011/p/594b34939916e070aad2e1e4d2ae8d04.html
Copyright © 2020-2023
润新知