1

ウェブカメラを開こうとするデルファイアプリがあります。Windows 7では失敗することがありますが(これは別の話/質問/スレッドです)、Webカメラドライバーは「ビデオソース」というタイトルのダイアログをポップアップして、1つを選択するように促します。ループでドライバーを繰り返し開き、ダイアログが表示されるたびに手動でダイアログを閉じようとすると、作業を開始できます。そこで、アプリからダイアログを閉じたいと思います。FindWindow(nil、'ビデオソース')はそれを見つけられません。Process Explorerで見ると、ダイアログは自分のアプリに属していると表示されます。PEから強制的に閉じると、アプリが閉じます。このダイアログを閉じるにはどうすればよいですか?このダイアログが開いている間、アプリがハングしている疑いがあります(確認済み)。これにより、ダイアログを閉じるためのコードを実行するのがかなり困難になります。

4

1 に答える 1

1

このポップアップダイアログが原因でメインアプリケーションスレッドがユーザー入力を待って停止している場合、唯一の解決策は、このポップアップを定期的に見つけようとする別のスレッドを実行することです。見つかったら、PostMessageを使用してWM_CLOSEまたは同様のポップアップハンドルを使用します。ポップアップのボタンにマウスダウン/マウスアップメッセージを送信する必要がある場合があります。

さらに、Windows APIWindowFromPointを使用してポップアップウィンドウについて調べる小さなデバッグアプリケーションを作成します。目に見えるキャプションだけでなく、クラスでもあります。このデバッグプログラムを使用して、FindWindowを正しく機能させることもできます。

于 2010-12-01T09:47:12.223 に答える