掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
他アプリケーション起動後の呼び出し元フォームの位置 (ID:19210)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
呼び出し元アプリケーションAから他のアプリケーションBを CreateProcessで起動し、WaitForSingleObjectで終了を待っています。 AはBの起動中に操作されては困るので、CreateProcess前にフォームのEnableをFalseに設定し、 Bの終了を待ってからEnableをTrueに設定しています。 そこで問題なのですが、呼び出し元フォームがモーダルで表示されている場合、 そこで上記方法の他アプリケーション呼び出しを行うと、呼び出し元フォームに戻ってきたときに、 他のウィンドウ(エクスプローラー等)があると、その後ろに隠れてしまいます。 呼び出し元フォームがモーダル表示でなければ問題はありません。 モーダル表示から他アプリケーションを起動して、戻ってきた場合に他のウィンドウに隠れなくする方法は ありますでしょうか。 ■ ソース var UsSI: TStartupInfo; UsPI: TprocessInformation; begin try GetStartupInfo(UsSI); if not CreateProcess(PChar(TBitBtn(Sender).Name + '.EXE'), nil, nil, nil, False, CREATE_DEFAULT_ERROR_MODE, nil, nil, UsSI,UsPI) then begin Raise Exception.Create(TBitBtn(Sender).Name + '.EXE' + 'を起動できません'); Exit; end; FNYU2010_F2.Enabled := False; while WaitForSingleObject(UsPI.hProcess, 1000) = WAIT_TIMEOUT do begin Application.ProcessMessages; end; FNYU2010_F2.Enabled := True; FNYU2010_F2.Show; finally CloseHandle(UsPI.hProcess); CloseHandle(UsPI.hThread); end; end; ちなみに、フォームのコントロールをループで回して、Enableをコントロールする方法だと隠れませんでした。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.