1

我有一个尝试打开网络摄像头的 delphi 应用程序。在Windows 7 下,它偶尔会失败(这是另一个故事/问题/线程),但网络摄像头驱动程序也会弹出一个标题为“视频源”的对话框,邀请我选择一个。如果我尝试循环重复打开驱动程序并在每次出现时手动关闭对话框,我就可以开始了。所以我想从我的应用程序中关闭对话框。FindWindow (nil, 'Video Source') 没有找到它。如果我使用进程资源管理器查看,则对话框显示为属于我的应用程序。如果我从 PE 强制关闭它,它会关闭我的应用程序!如何关闭此对话框?我怀疑(已确认)我的应用程序在此对话框打开时挂起,这将使执行任何代码以关闭对话框变得非常困难。

4

1 回答 1

1

如果您的主应用程序线程由于此弹出对话框而停止等待用户输入,那么唯一的解决方案是让另一个线程运行,该线程定期尝试定位此弹出窗口。当它找到它时,然后使用 PostMessage 来使用 WM_CLOSE 或类似于弹出句柄。您可能必须将 mousedown/mouseup 消息发送到弹出窗口上的按钮。

此外,我会编写一个小型调试应用程序,它使用 Windows API WindowFromPoint 来查找弹出窗口,即。它不仅是可见的标题,而且是类。您还可以使用此调试程序使 FindWindow 正常工作。

于 2010-12-01T09:47:12.223 回答