※ ChatGPTを利用し、要約された質問です(原文:他アプリにSendMessage、postMessageで…)
他アプリを操作するソフトの保存先ダイアログの問題について
このQ&Aのポイント
他アプリを操作するソフトで、保存先ダイアログの問題が発生しています。
SendMessageは同期なので、同名ファイルが存在する場合に確認ウィンドウが表示されずにエラーが発生します。
postMessageでは非同期で処理が先行するため、同名ファイルの確認がされない場合もあります。回避策としては、ウィンドウキャプションを使用してハンドルをつかむまで待機する方法があります。
他アプリにSendMessage、postMessageで…
SendMessage、postMessageで他アプリを操作するソフトを作成しています。
そこで質問なのですが、保存先ダイアログの保存ボタンにメッセージを送りました。
SendMessageは同期なので、保存先に同名ファイルが存在した場合、確認ウインドウが立ちあがり返ってこなくなってしまいます。
そこでpostMessageで保存ボタンを押しました。
ところが非同期なので、自アプリの処理が先行して相手方のウインドウつかめずエラーが起きてしまいます。
必ず同名ファイル確認のウィンドウが立ちあがるのなら、ウィンドウキャプションでハンドルつかめるまでDo~loop等で待機も可能です。
が、同名ファイルの確認ウィンドウは立ちあがらない場合もあります。
こういった場合の記述の仕方ってどうしたらいいのでしょう?
問題点を整理すると
・同期メッセージでは、確認ウィンドウが立ちあがった場合に処理がストップする。
・非同期メッセージでは、何もしないと処理が先行して、同名ファイルの確認メッセージが表示されたのか判断できない。
・同名ファイル確認のウィンドウが立ちあがることを前提にDo~Loop等を使用した場合、立ちあがらないと処理が返ってこない。
以上の問題を回避できる記述の仕方ってありますか
お礼
SendMessageTimeoutは気が付きませんでした。 API関連はどうしても自分のやりたいことに行き着くのが大変ですね。 ありがとうございました。