• ベストアンサー

VB.NETとEXE

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

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

>GetWindow、GetTopWindow、GetNextWindow をまとめた、 enumwindowもあります。 http://www.vbvbvb.com/jp/gtips/index0801.html の846あたりにVB6のソースですが、サンプルがあります。 NETはわからないですが、読み取ってコンバートしてください。 だれか変わりにNETに翻訳してくれるなら、VB6でのサンプルソースを載せてもいいのですが、、、VB6のサンプルならいらないかな?

pichon_999
質問者

お礼

アドバイス、ありがとうございます。 参考URLは本当に勉強になります。 ブックマークに登録させていただきました。 .NETは社内で初めての試みで、誰も分かる人がおらず、VB6から翻訳(?)するとこばかりなので、VB6のソースでも大変助かります。 教えていただいたソースでなんとかなりそうなので頑張ってみます。 本当にありがとうございました。

その他の回答 (1)

  • don_cha
  • ベストアンサー率34% (139/407)
回答No.1

1.GetWindow、GetTopWindow、GetNextWindowと言うAPI関数がありますのでそちらを組み合わせれば識別可能ではないかと思います。 2.最小又は最大クリック時イベント処理で、連動する別EXEに対して最小又は最大になるようメッセージを投げれば良いかと思います。

pichon_999
質問者

お礼

ありがとうございます。 おかげで仕様を変更してもらわなくてもよくなりそうです(^^; API関数を使ったことがない(VB6含めて)ので、それも勉強しないといけませんね。 「EXEにメッセージを投げる」というのもしたことがないので頑張って研究(?)してみます。

関連するQ&A

  • 【VB2005】別のプログラムから別のプログラム起動

    "A"というVB2005で、作成したプログラムがありまして、 メインのフォームがあり、 そこにボタンがあります。 Shellの関数を使って、クリックイベントで、 指定したExe"B"を立ち上げます。 そのExe"B"は、VB2005で作成したオリジナルのプログラムです。 プロジェクトは別で作った物と考えてください。 Exe"B"を起動した画面を[フォーム1]と考えて、 ボタンがあり、クリックすると 別の[フォーム2]が表示するはずなのですが、 特にエラーも掴まずに、Showで開くことができません。 しかし、Exe"B"からダイレクトに起動させて ボタンをクリックしたら[フォーム2]が表示されます。 どうしたら、Exe"A"からExe"B"を起動して Exe"B"からフォーム2を呼び出すことができるか、 考えられる要因などをアドヴァイスして頂けたら助かります。

  • VB.NET2003で…

    フォーム1のコマンドボタンをクリックするとフォーム2が開き、フォーム1を閉じたいのですがどうすればいいのですか? 実行したときにフォーム1にシステム日付をラベルかテキストボックスに「2003年09月24日」と表示したいのですがどうすればいいのですか?

  • 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); で起動しております。 また、実現不可能というお答えでもいいので教えていただければと思います。 お手数ですが何卒よろしくお願いします。

  • Access フォームの入力について

    アクセス初心者です。 フォームA(メインとなる画面)でコマンドボタンをクリックすると フォームBが開くように設定しました。 フォームAでレコード1を入力時にコマンドボタンをクリックすると フォームBのレコード1に フォームAのレコード5を入力時にコマンドボタンをクリックすると フォームBのレコード5に移動してデータを入力できるようにすることは可能でしょうか?可能であればどのようにしたらよいでしょうか? 具体的には テーブル 社員NO、氏名・・・、希望地域(yes/no型)があります。 フォームA ・社員NO ・氏名など フォームB ・希望地域(チェックボックスでチェックする。複数選択可) フォームAを入力時にフォームBを開いて希望地域にチェックできる というようにしたいのですが、 フォームAからフォームBに移動するといつもレコード1が表示されてしまいます。 自分なりに試行錯誤しているのですがどうしてもできません。 よろしくお願いします。

  • 別のフォームを閉じる方法を教えてください

    アクセスで、2つのフォームA,Bが開いている場合(Bは最小化となっています)、フォームAを閉じる時(コマンドボタンAAをクリックした時)、フォームBも閉じたい場合の方法を教えてください。よろしくお願いします。

  • アクセスと起動する。

    フォームにコマンドボタンを配置しクリックすることによって オフィスのアクセスの「A」と言うデーターベースを起動し同時にVisual Basicで作成した(コマンドボタンを配置した)フォームを最小化にしたいのです。 宜しくお願い致します。

  • ソリュウション内でのexeの起動

    VisualBasic2005です。 今現在1つのソリューション内に メインメニューのプロジェクトと 3つのマスタを登録するプロジェクトがあります。 ソリューション  ├ProjectMain (メニュープロジェクト:main.exe)    ├メニューフォーム  ├Projectmaster1(マスタ登録1プロジェクト:master1.exe)    ├マスタ登録1フォーム  ├Projectmaster2(マスタ登録2プロジェクト:master2.exe)    ├マスタ登録2フォーム  ├Projectmaster3(マスタ登録3プロジェクト:master3.exe)    ├マスタ登録3フォーム メニュープロジェクト内の メニューフォームのボタンをクリックした際、 master1.exeを起動するにはどのように記述すればいいのですか? shellコマンドを使うのですか? その際、デバック時はexeが別々のフォルダに作成されると思うのです、どうしたらよいのでしょうか?

  • 指定したアプリケーションを処理が通るときだけモニターの画面の最前面に出したい

    お世話になります。 C++6.0 MFCで開発しております。 今、 (1)A.exeのボタンを押すとB.exeを起動(A.exeの上にB.exeが表示) (2)B.exeが終了するとA.exeに終了通知をして、A.exeに処理を戻す。  (A.exeを最前面に表示する) (3)再度A.exeのボタンを押す。  →(1)のときは、A.exeの上にB.exeが表示されていたのに、A.exeの下にB.exeが表示される (2)のA.exeに処理を戻した後、A.exeが最前面に出るように SetWindowPos(hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE) を実行しています。 (1)、(3)のA.exeのボタンを押すと、A.exeの上にB.exeが表示され、 (2)の時に、A.exeが他のアプリケーションを含めて、最前面、モニターの最前面に表示されるようにしたいのです。 お手数ですがなにとぞよろしくお願いします。 以上よろしくお願いします。

  • VBレイアウトの落とし穴?

    VB6.0について質問です。 フォームからコマンドボタンによりフォームを起動し重なるような形で表示されている状態なのですが 起動したフォームからコマンドボタンでメッセージボックスを表示すると起動したフォームが消えてしまいます。 メッセージボックスを終了すると再び消えたフォームは表示されるのですが、消えてしまう理由は何でしょうか?? できれば消えないでフォームの上にメッセージボックスを表示したいのです>< ご回答おねがいします、、、

専門家に質問してみよう