在回调函数里创建对话框失败
发表于:
2015-10-6 16:02
3752
[ATTACH]
[/ATTACH]我是想通过setwindowshookex用dll给Traceme.exe安装一个键盘钩子,捕获传给traceme。exe的F5键盘消息进行处理,当捕获的F5时创建一个对话框,编译没问题可是创建对话框显示程序出现异常,p—>Create(ID_DIALOG1)这句话有问题。请大神帮我看看我的程序哪里出问题了
这是dll代码
void show()
{
CTest *test;
test->Create(IDD_DIALOG1);
test->ShowWindow(SW_SHOW);
}
LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
AFX_MANAGE_STATE(AfxGetModuleState());
//AfxMessageBox("s/");
if((wParam==VK_F5)&&(lParam&(1<<31))==0)
{//mydlg *p=NULL;
AfxMessageBox("s/");
show();
// CTest *test=NULL;
//test->Create(IDD_DIALOG1);
//test->ShowWindow(SW_SHOW);
//if(p==NULL)
// {
//p=new mydlg;
//p->Create(IDD_DIALOG1,NULL);
//p->ShowWindow(SW_SHOW);
// }
//p->ShowWindow(SW_SHOW);
}
return CallNextHookEx(NULL,code,wParam,lParam);
}
void how()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HWND hwnd=::FindWindow(NULL,"TraceMe 动态分析技术");
if(!hwnd)
{
AfxMessageBox("未打开程序");
return ;
}
DWORD Pid=NULL;
DWORD Tid=NULL;
Tid=GetWindowThreadProcessId(hwnd,&Pid);
HHOOK hook=NULL;
hook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("201510063.dll"),Tid);
if(hook==NULL)
AfxMessageBox("钩子失败");
}
调用dll的mfc
void CTestdllDlg::OnButton1()
{
HINSTANCE hInst=LoadLibrary("201510063.dll");
p a;
a=(p)GetProcAddress(hInst,"how");// TODO: Add your control notification handler code here
a();
}
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: