我用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++写的代码,利用勾子获取键盘事件,里面有DEMO有readme十分完善
利用钩子函数,截获任何弹出的消息框MessageBox
利用钩子函数,截获任何弹出的消息框MessageBox 截获所有弹出的消息框
C#截获处理系统键盘消息的源代码
C#截获处理系统键盘消息的源代码,在网上看到,照着写的,测试可以用来截获、屏蔽和处理系统键盘的消息,如菜单开始键等。
用mfc实现hook,屏蔽了键盘和鼠标消息,留有默认后门
用mfc实现hook,屏蔽了键盘和鼠标消息,留有默认后门
通过钩子Hook截获键盘信息VC源码.rar
VC 通过钩子Hook截获键盘信息,代码中包括了所需钩子的源代码以及调用这个钩子实现键盘截获程序的源码,测试时请注意:先编译LaunchDLL,然后把LaunchDLL.h和LaunchDLL.lib复制到KeyHook工程目录中,LaunchDLL.dll复制到Debug目录下。


