s3233431 发表于 2016-4-27 20:14

【笔记】注入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 *****

风霜 发表于 2016-4-27 22:38

看不到执行结果.很难说明在哪个环节出了问题.没看明白是目标窗口退出还是注入的窗口退出.另外如果是目标窗口退出的话,建议看下当注入的窗口退出的时候目标窗口中的WM_CLOSE消息是不是被执行了.

风霜 发表于 2016-4-27 22:43

本帖最后由 风霜 于 2016-4-27 22:45 编辑

建议去找下VC外挂那些注入DLL窗口的资料.里面有很详细的写法及过程.另外很重要的一点就是.DLL卸载的时候一定要清理.有线程一定要等线程执行完毕后DLL再释放.否则就会出现某些不可预料的问题.

Tomatoman 发表于 2016-4-27 20:21

编程小白路过~学习一下

ゞ洣蔵→ 发表于 2016-4-27 20:48

线程不让自动结束,放个循环或者长延时 行么

shi159753 发表于 2016-4-27 20:50

来参谋,参谋   小弟还不知这是什么那

s3233431 发表于 2016-4-27 21:05

ゞ洣蔵→ 发表于 2016-4-27 20:48
线程不让自动结束,放个循环或者长延时 行么

用延迟线程会卡死,一直循环应该可以但是感觉代码不好看

楞枷山人 发表于 2016-4-27 21:12

正是我需要的 多谢楼主

xie83544109 发表于 2016-4-27 21:41

{:1_918:}
多谢楼主分享哟

s3233431 发表于 2016-4-27 21:43

xie83544109 发表于 2016-4-27 21:41
多谢楼主分享哟

快给我热心热心热心!
页: [1] 2
查看完整版本: 【笔记】注入DLL创建窗口闪退的问题