質問: モーダルダイアログボックスを表示せずにアプリを閉じるにはどうすればよいですか? 私はオプションでそれを作成した後PDFを開くことができるアプリがあります。 2つのレポートが同じ名前で連続して生成された場合、Acrobatの最初のコピーにまだPDFが開いていれば2番目の試行は失敗しますので、PDFを書き込む前にドキュメント名のウィンドウを(FindWindowで)チェックします。見つかった場合、私はSendMessage WM_Closeを発行します。 これは正常ですが、私はいくつかのテストを行っていましたが、PDFを編集するためにWordを使用していましたので、PDFファイルを書き込めないときにアプリケーションの動作をテストすることができました。さて、私のアプリがウィンドウを閉じようとすると、「保存しますか?」というダイアログが表示されます。私がキャンセルをクリックすると、Wordは開いたままになり、私のアプリは続行し、書き込めないファイルに遭遇したらそれが賢明に動作することをテストできます。 すべて良いですが、別のアプリを閉じるためにSendMessage WM_CLOSEを使用すると、他のアプリがモーダルダイアログをポップすると私のアプリが邪魔になります。これを回避する方法はありますか?つまり、他のアプリを閉じるより強力な(しかしあまりにも強力な)方法はありませんか?または、「必要に応じて閉じる」をクリックしてキャンセルします。または、非同期メッセージを使用する必要がありますか?
回答: 私は他のアプリケーションをまったく閉じないでしょう。私は、レポートを生成する前に、現在のファイルを削除する方が良いと思います。それが失敗した場合( `DeleteFile` )、(別のプログラムによって開かれているため)ファイルを上書きできないというメッセージをユーザに表示し、レポートをまったく生成しません。これは、ユーザーにオプションを残すので、はるかに安全です。また、これは、大きな頭痛からあなたを保存する場合、プログラムは、ウィンドウのキャプションにタイトルを表示しない別のプログラムによって開いている場合はどうなりますか?