我用hook截获了一个键盘消息后为什么会弹出两个对话框,应该只有一次的
#include "stdafx.h"
#include "hook.h"
#include <stdio.h>
HINSTANCE g_hInst;
#pragma data_seg ("shared")
static HHOOK g_hHook=NULL;
#pragma data_seg ()
LRESULT CALLBACK KeyboardProc(int iCode,WPARAM wParam,LPARAM lParam);
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hInst = HINSTANCE(hModule);
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
DLLEXPORT int CALLBACK InstallHOOK()
{
g_hHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0);
if (g_hHook)
return TRUE;
else
return FALSE;
}
DLLEXPORT int CALLBACK UninstallHOOK()
{
if (UnhookWindowsHookEx(g_hHook)==0)
return FALSE;
else
return TRUE;
}
LRESULT CALLBACK KeyboardProc(
int iCode, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if((GetAsyncKeyState(VK_CONTROL)&0X8000)&&wParam==VK_F12)
{
MessageBox(NULL, "DLL", "www", MB_OK);
}
return CallNextHookEx(g_hHook,iCode,wParam,lParam);
}
MessageBox(NULL, "DLL", "www", MB_OK)会出现两次,怎么回事啊???
其他的.h .cpp .def就只是一些定义而已
#include "hook.h"
#include <stdio.h>
HINSTANCE g_hInst;
#pragma data_seg ("shared")
static HHOOK g_hHook=NULL;
#pragma data_seg ()
LRESULT CALLBACK KeyboardProc(int iCode,WPARAM wParam,LPARAM lParam);
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hInst = HINSTANCE(hModule);
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return 1;
}
DLLEXPORT int CALLBACK InstallHOOK()
{
g_hHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0);
if (g_hHook)
return TRUE;
else
return FALSE;
}
DLLEXPORT int CALLBACK UninstallHOOK()
{
if (UnhookWindowsHookEx(g_hHook)==0)
return FALSE;
else
return TRUE;
}
LRESULT CALLBACK KeyboardProc(
int iCode, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if((GetAsyncKeyState(VK_CONTROL)&0X8000)&&wParam==VK_F12)
{
MessageBox(NULL, "DLL", "www", MB_OK);
}
return CallNextHookEx(g_hHook,iCode,wParam,lParam);
}
MessageBox(NULL, "DLL", "www", MB_OK)会出现两次,怎么回事啊???
其他的.h .cpp .def就只是一些定义而已
...全文
相关推荐
超级好用键盘截获消息的代码 C++ 可直接引用
本项目提供了一段“超级好用”的键盘截获消息的代码,可以帮助开发者实现对键盘输入事件的监听和处理。下面我们将深入探讨相关的知识点。首先,我们要了解的是**C++中的钩子(Hook)技术**。
利用钩子函数,截获任何弹出的消息框MessageBox
标题提到的“利用钩子函数,截获任何弹出的消息框MessageBox”就是利用钩子机制来拦截并处理`MessageBox`函数的调用。
C#截获处理系统键盘消息的源代码
`函数来安装全局键盘钩子,这样即使焦点不在我们的应用程序上,也能截获键盘消息。
用mfc实现hook,屏蔽了键盘和鼠标消息,留有默认后门
这个函数允许你插入一个钩子(Hook)到系统的消息处理机制中,捕获特定类型的系统事件,如键盘和鼠标事件。二、键盘和鼠标Hook1.
通过钩子Hook截获键盘信息VC源码.rar
该项目利用MFC框架和Windows Hook技术实现键盘输入信息的截获,包含完整的应用程序、文档与视图架构。核心功能通过钩子机制监听键盘消息,适用于开发键盘监控类软件,具备良好的Windows平台扩


