• 締切済み

Delphi EXEからShowmodalでEXE起動できますか?

はじめまして。Delphi3.1を使用しています。 EXE A から EXE B をShowModalのように起動することはできますか?Aを親画面、Bを子画面にしたいのですが。 ShellExecuteEx関数 WaitForSingleObject関数 などを使用してさらにAの親画面のEnabledを Falseに設定するとできたのですが、 Windowsでタスクの切り替えを行うと 親画面が前面にでてきます。 きれいにShowmodal表示させるには どうしたらよいでしょうか? (起動先のEXEをまるごとDLL化すると可能なのですが、画面数が多いので時間的に無理です。) 回答宜しくお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

SetWindowsPosで親ウィンドウにHWND_BOTTOM、子ウィンドウにHWND_TOPMOSTとか

non1972
質問者

お礼

さっそくのアドバイスありがとうございます! SetWindowsPos関数で一時的にZORDERを 設定してもうまくいかないようです。 子ウィンドウを常に前面に出すのも ちょっと・・。 いろいろAPI調べてみます。 ありがとうございます。

関連するQ&A

  • CreateProcessでEXEを起動させると残像が残る

    お世話になります。 VC++ 6.0 MFC で開発しております。 A.exeから、B.exeを起動しています。 A.exeの(画面上の)上にB.exeが表示されるのですが、 そのB.exeを動かすと白い残像みたいな跡がでます。 そのB.exeの残像みたいなのを出さないようにしたいのですがどのようにすればよいでしょうか ※B.exeを起動している間は、A.exeを操作できないようにしたいのです。 ***********実際のソースです。******** PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory(&si,sizeof(si)); si.cb=sizeof(si);   int kekka = CreateProcess(Pass,CommandChar,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi); if(kekka==0) { CString str; str.Format("起動することはできません。); AfxMessageBox(str, MB_OK, 0); } else { WaitForSingleObject(pi.hProcess,INFINITE); } PeekMessage()とかを使えばいいとか聞いたのですが、まったくわからない状態です。 大変お手数ですが具体的に教えていただければ大変ありがたいです。 なにとぞよろしくお願いします。

  • サーバー間のEXE起動

    すいません、宜しくお願いします。 開発言語 C# VS2008使用 今試しで画面を開発中なのですが、 Aサーバー Bサーバー Cサーバー と3つのサーバーがありまして、 Aサーバーに配置している画面のボタンを押された場合、 B、CサーバーのEXEを起動させると言う感じに構想考えています。 (すいません、セキュリティーとか抜きにして・・・) Aサーバーのタスク書き換え or Exe起動はうまくいくのですが、 他サーバーに同様に同じような事実行すると うまくいきません・・・ そもそも他サーバーのEXEを起動する事は出来ないのでしょうか??? 暇な時にでも付き合って頂けると幸いです。

  • EXEの起動について

    プログラムの連続起動をバッチファイルで作成しています。 本体(A.EXE)を連続起動させるべくfor文でテキストファイルを読み込み引数を与えながら起動して、ということをしたいのですが、A.EXEは自動で終了するもののワケあって終了した状態を取得できません。 そこで監視(B.EXE)を実行してA.EXEの終了を待つプログラムを用意しました。 for文の中でA.EXE起動→5秒待ち→B.EXE起動(バッチは待ち状態)→A.EXE終了→B.EXE終了(バッチ待ち解除)→2回目のA.EXE起動…という流れを想定していますが、B.EXEが待ち状態にならずA.EXEが実行されてしまいます。 バッチの中身をコマンドプロンプトで実行するとB.EXEは待ち状態となるのですがバッチ実行すると待ち状態になりません。 なにが原因かわからず質問いたしました。 ご助力いただけると助かります。 以下はバッチ内容です(for文は除きます)。 ----------------- start C:\work\A.EXE timeout 5 start /w C:\work\B.EXE ----------------- よろしくお願いします。

  • exe まとめる

    複数あるexeファイルをまとめるということはできるのでしょうか? そのようなものを作ってみたいと思っているのですが 例えば A,B,C,Dというexeファイルがあるとします Aというexeを起動させると B,C,Dのどれを起動させるか選ぶ画面が出てB,C,Dのどれかを選ぶと対応したexeが起動するといったものを作りたいと思っています。 Aをダブルクリック→B,C,D選択画面→Bを選択→Bのexeを起動 といった感じです。 ここでいうAというexeを作成してみたいのです。 わかりにくくてすみません。 プログラミングに関してはほとんど初心者どうぜんでjavaを少々やっているだけです。 できるようなら色々試行錯誤してやってみたいと思うのですが、参考になるページなどあるでしょうか? 詳しい方よろしくお願いします。

  • createprocessで起動させる別.exeをモーダルで起動したい

    createprocessで起動させる別.exeをモーダルで起動したい お世話になります。 VC++6.0 MFCで開発しております。 現在A.exeのあるボタンを押すとcreateprocessでB.exeを起動させるようにしております。 B.exeを起動後、A.exeの画面表示をクリックするとA.exeがアクティブになるのです。 それを、B.exeが終了しないとA.exeがアクティブにならないように変更したいのですがどのようにすればよいでしょうか? 現状は PROCESS_INFORMATION pi; STARTUPINFO si; si.cb=sizeof(si); CreateProcess(実行EXEパス,コマンドライン,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi); で起動しております。 また、実現不可能というお答えでもいいので教えていただければと思います。 お手数ですが何卒よろしくお願いします。

  • 別PCのEXEを起動したいのですが・・・

    こんにちは。質問させていただきます。 2台のPCA,Bがありまして、JAVAでAからBの中にあるEXEファイルを起動したいと思っています。 BのEXEはあるツールのOCXを使用して作成されていまして、 そのOCXはBの中にはありますが、Aには登録してありません。 BのPCからEXEを起動した場合は問題なく動作するのですが、 AのPCからexecメソッドを使用しBの中のEXEを指定して起動すると、 「コンボーネント '○○.ocx'、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。」 というエラーがでます。 AのPCからexecメソッドを使用した場合、指定したBの中のEXEをAのPCで実行しようとしているから、OCXが登録されていないAではエラーが出るということでしょうか? AのPCにはOCXを登録することをしたくない為、「B自身がEXEを起動する」というような動きにしたいのですがどのようにすれば良いのでしょうか。 文章が分かりにくいと思いますので、回答しにくい場合は指摘してください。 よろしくおねがいします。

    • ベストアンサー
    • Java
  • Shellコマンドで別のexeを起動するとフォーカスが別exeにいかない

    2本のEXE(AとB)があって、 AからBを呼び出して、Bの終了ボタンを 押すとAに戻るようなプログラムがあります。 Bを最前面にして起動しているのですが、 Bにフォーカスがいってくれません。 (Aに残ったままになっている?) ちなみにAもBもウィンドウスタイルは、 青いバーが出ている状態(動かせる状態)です。 Bが起動している間、Aはその後ろでまっている ようなイメージです。 どうやったらフォーカスを渡すことが できるでしょうか? <条件> Bのプログラムは修正することができません。 Aのプログラムは自由に修正できます。 どなたか教えて下さい。

  • あるアプリが起動中かどうかを調べる方法

    こんにちは。 アプリからShellExecuteEx関数を使って外部アプリ(*.exe)を 起動したいのですが、このアプリがすでに起動中だったら 起動しないようにしたいと思っています。 あるアプリが起動中かどうかを調べる方法、もしくは アプリを終了する方法をご存知のかたは おしえてください。 環境はeVC++4.0です。 よろしくお願い致します。

  • VB.NETとEXE

    VB.NETで作成したフォーム(仮にメインフォームとします)にコマンドボタンを複数貼り付けています。 各コマンドボタンをクリックすると、それぞれの別のEXEが起動します。 (例 コマンドAをクリックすると、EXE-Aが起動、コマンドBをクリックするとEXE-Bが起動。両方一度に起動も可) この時、必ずメインフォームの上にEXEのフォームが重なるように表示されています。 そこで質問があります。 1、複数EXEが起動されている時、一番前面に表示されているEXEを識別する方法はありますか? 「現在アクティブなEXE」とは異なります。なぜなら、メインフォームをクリックすると、前面に表示されているEXEはアクティブな状態とはならないためです。 2、メインのフォームの右上にある「最大化」や「最小化」のボタンをクリックしたら、それに連動してEXEも最大化や最小化をするようにすることは可能でしょうか? すこしわかりにくいと思いますが、補足もしますので、アドバイスよろしくお願いします。

  • 自動リリースにおけるEXE起動について

    社会人1年目です。 以下の課題について方法をご教示ください。 システムAとBがあります。 AとBはLANでつながっています。 Bで不具合が発生しAからBに配信します。 (1)配信したEXEでBを起動したいが、配信時にはBは立ち上がってるため、EXE上書きで起動ができないと思います。 こういった場合、どうやってEXE差し替えを行い再起動するのでしょうか。 (2)Bにはデータベースがあり、新しいテーブル追加のSQLを配信でBのデータベースにリリースします。こういった場合のやり方をご教示ください。 ※ネットで色々調べたのですが全くでてきませんでした・・・