如何在任务管理器中或通过其他方法捕获Windows弹出框事件?


1

弹出框事件是一个带有“确定”单击框的Windows错误通知。我想自动点击“确定”或抑制弹出框的外观。但是如何捕获这个事件?我看不到在事件查看器中出现的任何内容,并且我无法跟踪错误的来源(除了源自excel.exe,它正在运行一个长时间运行的进程,当弹出框出现时偶尔会意外停止)。

弹出框中的其他信息包括以下内容:Microsoft Visual C ++运行时错误(R6025)。单击“确定”时,进程崩溃,这很好,因为此时我可以通过Windows事件查看器捕获崩溃事件,然后在其背面运行计划任务(重新启动)。

以下问题是相关的,但不同之处在于我只是在研究如何捕获和处理此事件,而不是查找并修复原因(此处链接)。

仅供参考:运行Windows Server 2012


这样做的目的是什么?你在写一个应用程序吗?如果你解释为什么它可以帮助我们更好地理解这个问题:)
Dave

@戴夫。我有一个长时间运行的过程(基本上计算一些数据并将结果写入文本文件)。弹出框停止进程运行,我必须手动登录才能解决问题(在弹出框中按“确定”,或重新启动应用程序)。一个可行的解决方案将允许我在弹出框出现时处理它(处理它 - 例如自动重启应用程序),而不是挂起应用程序直到我手动干预。
Yugmorf 2014年

你在做什么语言?
戴夫

如果可能,那么.net或vb脚本。它取决于语言吗?
Yugmorf 2014年

Answers:


0

我认为你需要使用AutoHotKey

它有一个计时器,这意味着您可以每N秒触发一次事件来检查,或者,它也可以原生检测它(我认为)

#Persistent
SetTimer, MsgBoxCheck, 1000

MsgBoxCheck:
If WinExist("msgboxTitle", "msgboxTextString", "ahk_class #32770")
{
   WinClose
   ExitApp
}

要么

; "Waits until the specified window exists."
; secondsToWait can be omitted. (msgboxTitle/TextString are literal strings.)
WinWait, msgboxTitle ahk_class #32770, msgboxTextString, secondsToWait
if ! ErrorLevel ; didn't time out
    WinClose
ExitApp

两个代码段的来源

此外,StackOverflow上的帖子也有类似的问题


1
我会试试的。谢谢。感谢您提供答案所花费的时间,但不幸的是,由于我的声誉仍然很低,我似乎无法向您投票。谢谢你们。
Yugmorf 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.