为了保护您的计算机,windows已经关闭了此程序

heizu 2009-08-06 02:44:40
我做了一个屏幕取词软件,当在资源管理器中左右快速移动主窗口时,资源管理器不能正常刷新,一片白,好像死机了似的,同时,会弹出DEP保护的提示框:为了保护您的计算机,windows已经关闭了此程序,请问哪里出了问题,是不是钩子程序有问题啊?
...全文
1027 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
heizu 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tr0j4n 的回复:]
你这是个做什么的钩子呢
[/Quote]

设置了一个鼠标全局钩子,算法网上大致都有的说
heizu 2009-08-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cnzdgs 的回复:]
虽然你的程序没有多线程,但你的程序是注入到别的进程里面执行的,explorer.exe肯定是多线程的。
[/Quote]

有道理,呵呵,那我试试双机调试
MoXiaoRab 2009-08-08
  • 打赏
  • 举报
回复
你这是个做什么的钩子呢
cnzdgs 2009-08-07
  • 打赏
  • 举报
回复
虽然你的程序没有多线程,但你的程序是注入到别的进程里面执行的,explorer.exe肯定是多线程的。
heizu 2009-08-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cnzdgs 的回复:]
注意多线程同步的问题。
[/Quote]

恩,昨天晚上我考虑到了这个问题了,不过我程序中没有用到多线程,可这给我提供了一种思路:这个错误应该是我挂上钩子函数以后,等待屏幕重绘,等待时间是200ms,200ms之后摘取钩子函数,给主窗口发送取词成功消息,并从缓冲区取数据,我想在这等待的200ms内,如果你使某个窗口失效引起全屏重绘,就会仍然执行我的钩子程序,这样就可能导致重回失败(因为我的钩子程序执行了大量的字符串处理),我正在按照这个思路改,不知道方向对不对.............
zhengq06 2009-08-07
  • 打赏
  • 举报
回复
GZ
cnzdgs 2009-08-06
  • 打赏
  • 举报
回复
注意多线程同步的问题。
heizu 2009-08-06
  • 打赏
  • 举报
回复
奥,对了,还有一个错误签名如下:
错误签名:
AppName: explorer.exe AppVer: 6.0.2900.2180 ModName: gdi32.dll
ModVer: 5.9.3.951 Offset: 000033ca


各位大大看看是什么问题啊,谢谢了,多提供一点思路......
heizu 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gyk120 的回复:]
安装一个虚拟机,然后利用WinDBG调试这个虚拟机,网上有教程可以参考,另外可以检查下有没有消息死锁
[/Quote]

恩,我查查这方面的资料
heizu 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gyk120 的回复:]
解决这种问题,可以调试,看看哪里调用了系统的内核API或者消息,再就是缓冲区溢出问题。或者关闭DEP,或者让DEP为这个程序设置一个例外
[/Quote]

恩,谢谢啊,我也就钩子程序调用了系统api,其他的都没有,我想是钩子程序有问题,但是我不知道怎么调试,也不知道该调试什么啊
gyk120 2009-08-06
  • 打赏
  • 举报
回复
安装一个虚拟机,然后利用WinDBG调试这个虚拟机,网上有教程可以参考,另外可以检查下有没有消息死锁
gyk120 2009-08-06
  • 打赏
  • 举报
回复
解决这种问题,可以调试,看看哪里调用了系统的内核API或者消息,再就是缓冲区溢出问题。或者关闭DEP,或者让DEP为这个程序设置一个例外
heizu 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gyk120 的回复:]
DEP对钩子应该管的比较宽才对……
这种情况类似于死机,建议双机WinDBG调试
[/Quote]

建议“双机WinDBG调试”,怎么调试啊,呵呵,我没有听说过.....
heizu 2009-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 socoola 的回复:]
可能是你某个操作一直没有退出
[/Quote]

您的意思是我的钩子程序有问题么?没有恢复系统调用啊。
gyk120 2009-08-06
  • 打赏
  • 举报
回复
DEP对钩子应该管的比较宽才对……
这种情况类似于死机,建议双机WinDBG调试
wangk 2009-08-06
  • 打赏
  • 举报
回复
应该是,建议双机调试(虚拟机)这种图形处理。
socoola 2009-08-06
  • 打赏
  • 举报
回复
可能是你某个操作一直没有退出

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧