【笔记】注入DLL创建窗口闪退的问题
本帖最后由 奋斗丶小Z 于 2016-5-1 17:22 编辑最近无聊在写一个DLL的时候想实现注入DLL出现窗口
无奈本人技术太菜,被迷惑了几天,后来翻阅资料才找到
希望给刚刚学WIN32编程的朋友提示下,顺便给我自己写个笔记方便以后遇到了能马上查询到
创建一个非模态对话框
HWND CreateDialogParam(HINSTANCE hlnstancem,LPCTSTR IpTemplateName,HWND hWndParent,DLGPROCIpDialogFunc, LPARAM dwlniParam)
参数一:实例句柄,可以用GetModuleHandle(NULL);获取,也可以在DLL入口函数的参数hModule传入进去
参数二:资源模板,可以用MAKEINTRESOURCE宏包含你创建的RC资源
参数三:指定拥有对话框的窗口
参数四:指向对话框过程的指针,BOOL CALLBACK (*DlgProc)(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
参数五:指定传递到WM_INITDIALOG消息的IParam参数中的对话框过程的值。
返回值窗口句柄
在创建非模态对话框的时候需要使用多线程创建,不然注入的主程序会卡死,因为他会创建成功后直接返回,导致资源被释放,所以窗口会直接闪退。
解决方案看代码:
**** Hidden Message *****
看不到执行结果.很难说明在哪个环节出了问题.没看明白是目标窗口退出还是注入的窗口退出.另外如果是目标窗口退出的话,建议看下当注入的窗口退出的时候目标窗口中的WM_CLOSE消息是不是被执行了. 本帖最后由 风霜 于 2016-4-27 22:45 编辑
建议去找下VC外挂那些注入DLL窗口的资料.里面有很详细的写法及过程.另外很重要的一点就是.DLL卸载的时候一定要清理.有线程一定要等线程执行完毕后DLL再释放.否则就会出现某些不可预料的问题. 编程小白路过~学习一下 线程不让自动结束,放个循环或者长延时 行么 来参谋,参谋 小弟还不知这是什么那 ゞ洣蔵→ 发表于 2016-4-27 20:48
线程不让自动结束,放个循环或者长延时 行么
用延迟线程会卡死,一直循环应该可以但是感觉代码不好看 正是我需要的 多谢楼主 {:1_918:}
多谢楼主分享哟 xie83544109 发表于 2016-4-27 21:41
多谢楼主分享哟
快给我热心热心热心!
页:
[1]
2