ローカル OLE サーバーをインスタンス化するアプリがあります。
特定の条件下で、このサーバーは、公開されているメソッドの 1 つへの呼び出しに応答して、ダイアログ ボックスを開きます。
このボックスを抑制するか、何らかの形で「自動確認」する可能性はありますか?
問題は、アプリがスケジュールされたタスクとして実行され、ダイアログがポップアップするとハングすることです。
アプリのソースにはアクセスできますが、OLE サーバーのソースにはアクセスできません。
これはwin2k3にあります。
ローカル OLE サーバーをインスタンス化するアプリがあります。
特定の条件下で、このサーバーは、公開されているメソッドの 1 つへの呼び出しに応答して、ダイアログ ボックスを開きます。
このボックスを抑制するか、何らかの形で「自動確認」する可能性はありますか?
問題は、アプリがスケジュールされたタスクとして実行され、ダイアログがポップアップするとハングすることです。
アプリのソースにはアクセスできますが、OLE サーバーのソースにはアクセスできません。
これはwin2k3にあります。
ポップアップ ウィンドウのテキスト キャプションの一意性に応じて、多かれ少なかれ信頼できる回避策でこの問題を解決しました。
を使用してすべてのトップレベル ウィンドウをスキャンしEnumWindows()、 を使用してキャプションを取得し、キャプションをGetWindowText()プログラムの起動時に提供されるパターンと比較し、一致した場合は ( を使用してPostMesssage())WM_CLOSEをこのウィンドウにポストします。
このプロセスは、T ミリ秒ごとに繰り返されます。
このプログラムは、OLE サーバーを作成するプロセスと並行して実行され、不要なポップアップを開き、T ミリ秒後にそれらを閉じます。
1000 ミリ秒ごとに実行すると、目に見えるシステム負荷は表示されません。
VC10 を使用すると、バイナリは非常に軽量 (<8k) で、唯一の依存関係はmsvcr100.dllです。後者がバイナリ自体と同じディレクトリに置かれている場合、セットアップは必要ありません。私はそれをwin7で構築し、win2kとwin2k3でシームレスに動作します... :-)
このソリューションのソース (および VC10 ソリューション/プロジェクト ファイル) は、https ://github.com/ealk/wd にあります。