首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

DLL中 用钩子创办对话框遇到的怪异现象

2012-09-25 
DLL中 用钩子创建对话框遇到的怪异现象在DLL中加入了一个对话框资源,并为他建立了基于对话框的类,在DLL中

DLL中 用钩子创建对话框遇到的怪异现象
在DLL中加入了一个对话框资源,并为他建立了基于对话框的类,在DLL中导出一个安装钩子的函数
void sethook()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

hgame1=FindWindow(NULL,"要注入的进程窗口");
DWORD tid=::GetWindowThreadProcessId(hgame1,NULL);
::SetWindowsHookEx(WH_GETMESSAGE,&callback,::GetModuleHandle("system.dll"),tid);

钩子的回调函数如下:
LRESULT CALLBACK callback(
  int code, //
  WPARAM wParam, // 
  LPARAM lParam // 
)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
 

MSG m=*(MSG *)lParam;
if(m.wParam==VK_HOME&&m.lParam==0xC1470001)
{
if(wgmain==NULL)
{
wgmain=new CMain;
}
wgmain->Create(IDD_DLG_main);
wgmain->ShowWindow(true);
}
return CallNextHookEx(0,code,wParam,lParam );

}

问题是当, 我们在DLL注入的进程窗口按键HOME时,则呼出的对话框在注入进程主窗口界面以内,在任务栏没有我呼出对话框的图标

如果用其它程序向DLL注入进程窗口发送按键消息,::PostMessage(hgame,WM_KEYUP,VK_HOME,0xC1470001);则呼出的对话框在注入进程主窗口界面以外,在任务栏有呼出对话框图标

同一段代码出现了不同的效果,十分怪异,请指教!

[解决办法]
创建App Wnd样式的对话框,就会在任务栏有图标

热点排行