我用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就只是一些定义而已