• 締切済み

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

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

みんなの回答

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.1

意味がよくわかりませんので、補足をお願いします。 A.EXE と B.EXE という実行ファイルがあり、それらは VB 2005 で 作ったもので…… A.EXE から Shell 関数で B.EXE を起動すると B.EXE が持っている Form2 の表示が不可能となるが A.EXE を起動していない状態で B.EXE を起動すると B.EXE が 持っている Form2 の表示が可能である。 という意味なのでしょうか? A.EXE から B.EXE の起動と表示を行う箇所のコードも記述して 頂けると何かわかるかも知れません。

dizzdive
質問者

補足

ソースコードは、業務的な部分が含まれており、 部分的に出しても難しいと判断して、 原因だけでも、抜き出すことができたので 報告します。 B.EXEのボタン処理に「現在動作している"EXE"のあるフォルダ」を探して そこにあるIniファイルを読込んでプログラムを立ち上げていたみたいです。 なので、A.Exeから立ち上げるとAのプログラムが動作しているので そこのフォルダからIniファイルを探そうとするので、 エラー回避で、プログラムが走らないようになっているみたいです。 根本的に、Iniファイル参照に問題があったということで、 解決?したと思います。 回答していただいたので、ポイント入れさせて貰います。 ありがとうございました。

関連するQ&A

  • VB.NETとEXE

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

  • プログラムをアクティブにしないようにするにはどうするのですか?

    a.exeを起動したら Aの中でshellでb.exeが起動する a.exeの上にb.exeが起動しているかたちになります。 このときにa.exeの画面をクリックしても a.exeはアクティブにならずにしたいのですがどうすればよいのか 襲えてください。 a.exeはフォームにbmpをはり各プログラムの背景画面にしたいので クリックされてもなにを反応しないようにしたいのです。 よろしくお願いします。

  • VBで別のプログラムを起動し他の処理を中断したい

    VBプログラムの実行中に、shell("hoge.exe")で別のプログラムを起動しそのプログラムが終了すれば次の処理に移るという処理をしたいんですが、実現方法がわかりません。どうすればよいでしょうか?アドバイスよろしくお願いします。

  • ACCESS2000をいくつも起動しない方法

    現在 A.mdbからSHELL関数でB.mdbをボタンで呼びだして いるのですが、B.mdbを呼び出すボタンをクリックする 分だけSHELL関数が起動するので、B.mdbを 呼び出す状態です。これをなければ呼び出して あれば、そちらを最大化して表示させる方法が あれば教えてください。(ファイル制御せずに) また、VBも別ボタンで起動されるので、 VBが起動されているかもできれば教えてください (こちらは1つ以上起動したくないのですが・・・) よろしくお願い致します。

  • VB.NetのプログラムでVB6.0のプログラム2

    お世話になります。 VB.Netで作成されたプログラムAがあります。 VB6.0で作成されたプログラムBがあります。 プログラムBはイベント待ち状態になっており、特定のイベント(ボタンクリックイベント等)で特定のプロシジャーを実行するようになっております。 プログラムAからプログラムBの特定のイベントを発生させる、もしくはプログラムBの特定のプロシジャーを実行させる方法を探しております。 前回同じような質問をさせていただきましたが、こちら側からWindowsイベントとVB6.0のイベントの指定の説明が抜けておりましたので、改めて質問をさせていただきます。 何卒よろしくお願い申し上げます。

  • VBについて教えてください。

    1.a.exeでShell関数でb.exe起動したときにa.exeはみれなくして   b.exeで終了するとb.exeはなくなりa.exeだけにしたいのですが   どうすればよいのかおしえてください。   a.vbp   RetVal = Shell("c:\b.exe", 1)   ← b.exeの起動 b.vbp end ← 終了   b.exeが起動中はヤククにa.exeがなくなり、b.exeが終了すると   a.exeが起動するようにしたいのです   よろしくお願いします。   WINDOWS98でvb6.0で開発しています。   

  • VBで作成した実行形式の戻り値を作成したい

    VBで作成した実行形式の戻り値を作成したいと考えています. たとえば,A.exeという実行形式をVBで作成します. このA.exeを別のプロジェクトでshell関数などで起動します. 処理が終了した時に, A.exeの処理が成功した場合に1 A.exeの処理が失敗した場合には0を返すようにしたいと考えています. 可能でしょうか? 環境:Windows2000+SP3 Visual Basic 6.0+SP5

  • TIMERについて

    VB6.0 SP5での質問です フォーム一つのみをもつ、 単純なプログラムがあるとします。 (1)フォームにはTimerオブジェクトが貼り付けてあり 1秒ごとに、イベントが起きるようにします。 (2)それと同じ構造のプログラムをもうひとつ作ります。 (1)のフォームから(2)のプログラムを読み出す ボタンを追加します。 EXEファイルを作成します。 (1)の(2)を読み出すボタンを押して(2)を起動した時に、 (1)で動いているTimerは一体どうなるのでしょうか? (2)のEXEが開いているうちも、動きつづけるのでしょうか? 一つのプロジェクトの中に2つのフォームがあった場合 だと、2つ目のフォームを開いていても、 1つめのフォームrのTimerは動いているようでした。 別EXEの場合はどうなるのでしょうか? どなたか至急教えてください。お願いします。

  • VB6のWScript.Shellについて

    VB6のWScript.Shellで、他のVB6プログラムを起動する時の戻り値について教えてください。 AというVBプログラムからBというVBプログラムを起動するシステムがあります。 Bというプログラムで取得した値をAに返す方法はありますでしょうか? Aのソースは以下の通りです。 --------------------------------------------- sub test() dim objWshShell set objWshShell = Wscript.CreateObject("WScript.Shell") objWshShell.Run "C:\B.exe" & " " & hikisu1 & " " & hikisu2 , 1, wait End Function ---------------------------------------------- objWshShell.Runの戻り値はtrueまたはfalseのみのようです。 B.exeからtrue、false以外の値を取得する方法はありますか? また、やり方はobjWshShell.Runでなくてもよいです。 よろしくお願いします。

  • ソリュウション内での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が別々のフォルダに作成されると思うのです、どうしたらよいのでしょうか?