0

ローカル OLE サーバーをインスタンス化するアプリがあります。

特定の条件下で、このサーバーは、公開されているメソッドの 1 つへの呼び出しに応答して、ダイアログ ボックスを開きます。

このボックスを抑制するか、何らかの形で「自動確認」する可能性はありますか?

問題は、アプリがスケジュールされたタスクとして実行され、ダイアログがポップアップするとハングすることです。

アプリのソースにはアクセスできますが、OLE サーバーのソースにはアクセスできません。

これはwin2k3にあります。

4

1 に答える 1

0

ポップアップ ウィンドウのテキスト キャプションの一意性に応じて、多かれ少なかれ信頼できる回避策でこの問題を解決しました。

を使用してすべてのトップレベル ウィンドウをスキャンしEnumWindows()、 を使用してキャプションを取得し、キャプションをGetWindowText()プログラムの起動時に提供されるパターンと比較し、一致した場合は ( を使用してPostMesssage())WM_CLOSEをこのウィンドウにポストします。

このプロセスは、T ミリ秒ごとに繰り返されます。

このプログラムは、OLE サーバーを作成するプロセスと並行して実行され、不要なポップアップを開き、T ミリ秒後にそれらを閉じます。

1000 ミリ秒ごとに実行すると、目に見えるシステム負荷は表示されません。

VC10 を使用すると、バイナリは非常に軽量 (<8k) で、唯一の依存関係はmsvcr100.dllです。後者がバイナリ自体と同じディレクトリに置かれている場合、セットアップは必要ありません。私はそれをwin7で構築し、win2kとwin2k3でシームレスに動作します... :-)

このソリューションのソース (および VC10 ソリューション/プロジェクト ファイル) は、https ://github.com/ealk/wd にあります。

于 2013-01-24T16:08:16.580 に答える