惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
V
Vulnerabilities – Threatpost
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
G
GRAHAM CLULEY
S
Securelist
P
Palo Alto Networks Blog
MongoDB | Blog
MongoDB | Blog
A
Arctic Wolf
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
WordPress大学
WordPress大学
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
博客园 - 叶小钗
B
Blog RSS Feed
C
Cisco Blogs
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
K
Kaspersky official blog
D
Docker
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
Cyberwarzone
Cyberwarzone
Security Latest
Security Latest
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Spread Privacy
Spread Privacy
Microsoft Azure Blog
Microsoft Azure Blog
C
Check Point Blog
J
Java Code Geeks
Simon Willison's Weblog
Simon Willison's Weblog
T
Tenable Blog
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
H
Help Net Security
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
Jina AI
Jina AI
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
NISL@THU
NISL@THU
美团技术团队
腾讯CDC

博客园 - zhh007's Bolg

最近越来越当心,是不是自己真的老了。。。 - zhh007's Bolg - 博客园 在asp.net中应用VML需注意 - zhh007's Bolg - 博客园 链接js文件编码问题[asp.net 2.0] - zhh007's Bolg 图表 Windows Server 2003 激活 - zhh007's Bolg CodeSmith OutPut file HOOK笔记[2] - zhh007's Bolg - 博客园 在Dialog上贴图 C++常用网址 程序代码美化工具 C++程序员常用工具集 C++程序员常用工具书 c++资源之不完全导引 WINDOWS系统文件索引〔转摘〕 看别人这么说,中国人〔转摘〕 面相 把内网服务发布到公网 一招克死所有病毒[值得一看哦] 三十岁前不要去在乎的29件事
HOOK笔记[1]
zhh007's Bolg · 2005-11-10 · via 博客园 - zhh007's Bolg

HOOK分为内部HOOK和全局HOOK
一、内部HOOK
1、设置内部HOOK
HHOOK SetWindowsHookEx(
  int
idHook,        // hook type
  HOOKPROC lpfn,     // hook procedure
  HINSTANCE hMod,    // handle to application instance
  DWORD dwThreadId   // thread identifier
);
其中
hMod参数设为NULL,dwThreadId 参数设为调用HOOK的实例句柄;GetCurrentThreadId()可以得到当前实例的句柄。
2、编写HOOK过程
将HOOK过程名传递给lpfn参数;鼠标HOOK过程可以如此写:
LRESULT CALLBACK MouseProc(
  int nCode,      // hook code
  WPARAM wParam,  // message identifier
  LPARAM lParam   // mouse coordinates
)
{
 return 1;//表示我们已经对鼠标消息进行了处理,操作系统将不会再把鼠标消息发送给“窗口”;
}

3、释放HOOK句柄
在退出程序是调用UnhookWindowsHookEx释放HOOK句柄,如:
UnhookWindowsHookEx(hMouseHook);
4、参考示例
这是一个简单的对话框程序,只需在OnInitDialog函数中设置内部HOOK;并在OnInitDialog函数前添加相应变量和处理过程,参考代码如下:

 1HHOOK hKeyHook = NULL;
 2HHOOK hMouseHook = NULL;
 3HWND hWnd;
 4LRESULT CALLBACK MouseProc(
 5  int nCode,      // hook code
 6  WPARAM wParam,  // message identifier
 7  LPARAM lParam   // mouse coordinates
 8)
 9{
10    return 1;
11}

12
13LRESULT CALLBACK KeyboardProc(
14  int nCode,      // hook code
15  WPARAM wParam,  // message identifier
16  LPARAM lParam   // mouse coordinates
17)
18{
19    if(VK_F4==wParam && (lParam>>29 & 1))//ALT+F4
20    {
21        ::SendMessage(hWnd,WM_CLOSE,0,0);
22        UnhookWindowsHookEx(hKeyHook);
23        UnhookWindowsHookEx(hMouseHook);
24    }

25    else
26        return CallNextHookEx(hKeyHook,nCode,wParam,lParam);
27}

28//-------------------------
29BOOL CInnerHookDlg::OnInitDialog()
30{
31        .
32    // TODO: Add extra initialization here
33    //设置钩子
34    hWnd = m_hWnd; / /在SendMessage中要用到该窗口句柄
35    hMouseHook=SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());
36    hKeyHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId());
37    return TRUE;  // return TRUE  unless you set the focus to a control
38}