我用hook截获了一个键盘消息后为什么会弹出两个对话框,应该只有一次的

「已注销」 「已注销」 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#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就只是一些定义而已
...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
「已注销」
VC/MFC 16,550 成员 421,606 内容