我有一个实例化本地 OLE 服务器的应用程序。
在某些情况下,此服务器会打开一个对话框以响应对其公开方法之一的调用。
无论如何有可能抑制这个框,或者以某种方式“自动确认”它?
问题是应用程序应按计划任务运行,并在弹出对话框时挂起。
我可以访问应用程序的源,但不能访问 OLE 服务器的源。
这是在win2k3上。
我有一个实例化本地 OLE 服务器的应用程序。
在某些情况下,此服务器会打开一个对话框以响应对其公开方法之一的调用。
无论如何有可能抑制这个框,或者以某种方式“自动确认”它?
问题是应用程序应按计划任务运行,并在弹出对话框时挂起。
我可以访问应用程序的源,但不能访问 OLE 服务器的源。
这是在win2k3上。
我通过某种或多或少可靠的解决方法解决了这个问题,具体取决于弹出窗口文本标题的唯一性。
我写了一个小程序,它使用 扫描所有顶级窗口EnumWindows()
,使用 获取它们的标题GetWindowText()
,将标题与程序启动时提供的模式进行比较,如果匹配发生,则将 a 发布PostMesssage()
到此WM_CLOSE
窗口。
这个过程每 T 毫秒重复一次。
该程序与创建 OLE 服务器的过程并行运行,OLE 服务器打开不需要的弹出窗口并在 T 毫秒后关闭它们。
如果每 1000 毫秒运行一次,则不会出现可见的系统负载。
使用 VC10,二进制文件的权重非常轻(<8k),唯一的依赖是msvcr100.dll
,如果后者与二进制文件本身放在同一目录中,则不需要设置。我在win7上构建它,它在win2k和win2k3下无缝运行...... :-)
此解决方案的来源(连同 VC10 解决方案/项目文件)可在此处找到:https ://github.com/ealk/wd