标题:求助:服务器异常报错,如何终止报错进程
只看楼主
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2022-1-26 15:18:04的发言:


最好能找出异常问题原因,才能彻底解决问题。
关闭弹出窗口:查找窗口获取窗口句柄,发送消息 WM_CLOSE or WM_DESTROY 给窗口

如何获得窗口句柄,这是我的盲区,还请吹版指教。
另外,不知这种窗口的句柄每次都是一样的
2022-01-26 16:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用laowan001在2022-1-26 16:25:58的发言:


如何获得窗口句柄,这是我的盲区,还请吹版指教。
另外,不知这种窗口的句柄每次都是一样的

API FindWindow()
句柄是会变的,FindWindow()返回窗口句柄,可按窗口标题查找,窗口标题不变就可以。
2022-01-26 19:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用laowan001在2022-1-26 16:24:08的发言:


都是SQL语句,有时需要先得到查询结果,然后进行本地加工,之后再插入或更新后台数据库,大块头基本都是insert和update,多的时候会有上万条,所以会很大

上万条语句的串有点规模,可不可以分模块来处理,不用一次载入那么大的串,串太大也可能影响效率。
2022-01-26 19:16
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2022-1-26 19:16:19的发言:


上万条语句的串有点规模,可不可以分模块来处理,不用一次载入那么大的串,串太大也可能影响效率。

所言极是,后来把可能较大的SQL加工成500K一次了
2022-01-26 19:36
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
吹版好,现在可以获得窗口的句柄了,但是如何关闭还是没找到相应方法,似乎要通过PostMessage发送WM_CLOSE or WM_DESTROY,请吹版给段代码,谢谢!!!

再次感谢吹版,在坛里找吹版两年前的一个帖子,正好用到了这个,测试已经成功

[此贴子已经被作者于2022-1-26 20:54编辑过]

2022-01-26 20:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 25楼 laowan001
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
#define WM_CLOSE    0x0010
SendMessage(窗口句柄, WM_CLOSE, 0, 0)
2022-01-26 20:56
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
以下是引用吹水佬在2022-1-26 20:56:18的发言:

DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
#define WM_CLOSE    0x0010
SendMessage(窗口句柄, WM_CLOSE, 0, 0)

OKOKOK
2022-01-26 21:17
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:0 
建议还是多测试代码,这里给你一个小工具,增加触发错误的EIP执行位置,通过反汇编可以找到相应的崩溃点(要有点破解基础),方便查看平时代码是否严谨,on error try捕获的错误级别有限. (附件见31楼)


[此贴子已经被作者于2022-1-27 18:08编辑过]

2022-01-26 23:02
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
回复 28楼 foxfans
非常感谢,我试下
2022-01-27 07:58
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
试试用 API SetUnhandledExceptionFilter() 来处理系统异常情况。
不过VFP使用 SetUnhandledExceptionFilter() 涉及到回调函数(函数指针)的问题有点麻烦,可以用其他编程语言写API扩展库给VFP调用。
这样也许系统抛出异常时可以与VFP通信,VFP在出现异常关闭前能处理一些重要的事情。
2022-01-27 15:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508227-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.641583 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved