ある長くかかる処理があります。
その処理が終了したら、Application.MessageBoxで処理終了のメッセージを
表示します。
その処理を実行している最中、他のアプリケーション(Excel)などを使用します。処理終了後、Excelからフォーカスを奪って、画面にメッセージ表示することは可能でしょうか?
メッセージダイアログを新規に作成して、OnTop指定してやればできるんじゃない?
アドバイスありがとうございます。
メッセージダイアログを新規に作成して、とありますが、
MessageDlg関数のことでしょうか?それともフォームのことでしょうか?
MessageDlg関数の場合、OnTop指定とはどのようにしたらいいのでしょうか?
DelphiのHelpやWeb上で調べたのですが、見つけきれませんでした。
フォームの場合、ShowModalでは他のアプリケーションからフォーカスを奪うことは
できませんでした。こちらもOnTopの指定方法がわかりませんでした。
わからないことばかりですみませんが、よろしくお願い致します。
強力な方法ではありませんが、
Application.MessageBoxの直前に
SetForegroundWindow(Handle);を入れてみてはどうでしょう?
この場合強力なトップレベルウィンドウがあるとフォーカスは奪えません。
もちろん強力なメッセージボックスもありますので、これで気に入らない場合は
http://msdn.microsoft.com/ja-jp/library/cc410914.aspx
monaaさん、ありがとうございました。
MessageBox関数のメッセージボックスのスタイルに「MB_TOPMOST」を指定し、
メッセージボックスを最前面ウィンドウとして作成することで解決できました!!
本当にありがとうございました!!
ツイート | ![]() |