比如将来注入到QQ程序.我自己写了一个MFCDLL
InitInstance()
{
CMyDlg dlg; //资源对话框生成的类
dlg.DoModal();
}当然,在InitInstance里创建线程可以解决这个问题.但我就是不明白..这个MFC DLL,我是用创建远程线程的方法注入到QQ进程的..为什么dlg窗口显示后. QQ窗口被卡住???
InitInstance()
{
CMyDlg dlg; //资源对话框生成的类
dlg.DoModal();
}当然,在InitInstance里创建线程可以解决这个问题.但我就是不明白..这个MFC DLL,我是用创建远程线程的方法注入到QQ进程的..为什么dlg窗口显示后. QQ窗口被卡住???
DWORD _stdcall threadFun()
{
CMyDlg dlg; //资源对话框生成的类
dlg.DoModal();
}InitInstance()
{
CreateThread(0, 0, threadFun, 0, 0 , &id);
} 我想实现. 当CMyDlg窗口点击关闭按钮后, 这个dll资源从QQ进程释放...请问怎么做?
如果是非模态,响应WM_CLOSE消息,调用DestroyWindow销毁对话框,再PostQuitMessage使消息循环结束。
最后返回FALSE,使LoadLibrary失败。
如我5楼所写,我用的是模态的..
点我当击CMyDlg窗口的退出后, DLL还在QQ进程中...
而好像自己又不能FreeLibrary自己..所以不知道怎么解决..?
你还可以在注入代码的时候多写几条指令,在LoadLibrary之后,GetProcAddress并调用一个导出函数,可以在这个函数中创建线程并等待线程结束,函数返回后再调用FreeLibrary。
不过最简单的方法还是用非模态对话框,把对话框的创建、显示和消息循环都做在InitInstance函数里面,最后函数返回FALSE自动卸载。