• ベストアンサー

プロジェクトA にて プロジェクトB からの応答を感知したい

OS:win2000pro VB:VB6.0sp5 プロジェクトA formA にて 別プロジェクトBを実行  private sub command_click()   projectB.exe   MsgBox "projectB 実行完了"  end sub 1.projectBの処理がすべて完了したら  メッセージ「projectB 実行完了」  を出力したいのでが、どのようにすれば良いのか  分かりません   ご教示くださいます様よろしくお願いいたします 2.projectBの処理中にエラー発生時も  projectA にて感知したいのですが、  どのようにすればいいのでしょうか?  初歩的なご質問で申し訳ございません よろしくお願いいたします

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

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

他のexeを起動させるにはShell関数を使う方法とAPIを使う方法があるのですが・・ Shell内で起動しShellの終了を取得してメッセージを表示ではどうでしょうか? projectB.exeオブジェクトのハンドルを取得させて終了を待ち終了したらメッセージを表示する。 Private Declare Function OpenProcess Lib "kernel32" _ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" _ (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Function CloseHandle Lib "kernel32" _ (ByVal hObject As Long) As Long Private Const PROCESS_QUERY_INFORMATION = &H400& Private Const STILL_ACTIVE = &H103& Private Sub ShellEnd(ProcessID As Long) Dim hProcess As Long Dim EndCode As Long Dim EndRet As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, ProcessID) Do EndRet = GetExitCodeProcess(hProcess, EndCode) DoEvents Loop While (EndCode = STILL_ACTIVE) EndRet = CloseHandle(hProcess) End Sub private sub command_click() On Error GoTo command_Click  Dim Ret As Long     Ret = Shell("C:\フルパス\projectB.exe", AppWinStyle.Hide)   ShellEnd (Ret)   MsgBox ("projectB 実行完了")   command_Click: MsgBox Err.Description Exit Sub End Sub 試しに貼り付けてやってみてください。

その他の回答 (1)

回答No.1

A.exeに見えないボタンを用意して、B.exeの処理終了後にA.exeの見えないボタンを押させるというのはどうでしょう? http://okweb.jp/kotaeru.php3?q=199357 もしくは、B.ExeをAcitveXEXEとして作成してしまえば、A.exeの内部DLLのようにB.exeを扱えるので、そっちの方がお勧めできるかもしれません。

関連するQ&A

  • プロジェクト間の値の渡し方

    projectTEST 上のcommandボタンをclickした場合 private sub commandWork_Click()  Shell projectWORK.exe, vbNormalFocus end sub と内容にて別のプロジェクト(projectWORK)を実行しています projectTEST→projectWORK に meno as string の 値を渡したいのですが、可能でしょうか? また、どのようにすれば良いのでしょうか? よろしくお願いいたします

  • 【VB】超初歩的な質問

    2,3日前からVB6を勉強しています。 大変初歩的な質問となりますがお許しください。 コマンドボタンを一つ貼り付けた状態で、以下のプログラムを書いて実行した場合、処理が終わらなくなりますよね。 Private Sub Command1_Click() test: MsgBox "test" GoTo test End Sub それを終了するのはやはり強制終了するしかないのでしょうか?

  • 標準モジュールとイベントの質問

    初めて質問します。 ビジュアルベーシックで標準モジュールで ボタンのクリックイベントを実行したいのですが どうやってプログラムすればいいんでしょうか? 今の会社に入っていきなりVBの仕事させられて とっても困っています。 Private Sub Frm1Command1_Click() Call Module1.Frm1Command1_Click End Sub こんな書き方じゃなくて、標準モジュール内で Public Sub Command1_Click() MsgBox "sine" End Sub って書いて実行できるようにしなくてはダメなんです。 どうすればいいんでしょうか? もしかして無理なんでしょうか? これ、上司の嫌がらせだったらイヤですね・・・。

  • フォームがないプロジェクト

    vb2005でプロジェクトを作成しています。 このプロジェクトはフォームがなく moduleのみで構成されています。 sub main() ・・・・・・・・ end sub private function ... ..... end function このプロジェクトで、開始時と終了時に絶対実行したい処理を追加したい場合は、新たにフォーム等を作成して、フォーム非表示にするなどの設定をしなければいけないでしょうか? できればご教授、よろしくお願い致します。

  • [VB6]オーナーウィンドウを設定したShowメソッド

    こんにちは。 XP(SP2),VB6(SP6)で 親フォーム -> 子ダイアログ -> 孫ダイアログを表示する処理を作成し実行すると、 子ダイアログを閉じた際、親フォームが他のアプリケーションの下 にもぐってしまいます。 (例えばメモ帳上で実行して、子ダイアログを閉じた時にメモ帳の下に隠れてしまう、デバッグ時ならばVBの下に隠れる) 孫ダイアログを表示させずに、子を閉じるとこの様に減少は起こりません。 なぜこの様になるのでしょうか? 又、回避策はあるでしょうか?ご存じの方、教えてください。 以下、現象再現用のテストプログラムです。 親フォーム Private Sub Command1_Click() dlg1.Show vbModeless, Me End Sub 子ダイアログ(dlg1) Private Sub Command1_Click() dlg2.Show vbModal, Me End Sub Private Sub CancelButton_Click() Unload Me End Sub 孫ダイアログ(dlg2) Private Sub CancelButton_Click() Unload Me End Sub

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

    お世話になります。 vb6です。 witheventsでフォームのイベントを 処理したい。 form側 1.command1を貼り付け 2.class作成、init() ★3.コマンドをクリックしたら メッセージがでないのですが class側 private withevents cmd as commandbutton public function init() as boolean set cmd = form1.command1 end function private cmd_click() msgbox "ok" end sub 致命的に間違ってると思います。 よろしくお願いいたします。

  • Currency (通貨型)に関して教えてください

    Currency (通貨型)に関して教えてください。(VB5です) Private Sub Command1_Click() Dim a As Currency a = 222222 For i = 1 To a Next i End Sub 上のコードではFor文が一度も実行されずに終わってしまいます。 Private Sub Command1_Click() Dim a As Currency a = 22222 For i = 1 To a Next i End Sub これだとちゃんとiが22222まで実行されます。 一体どうしてでしょうか。 よろしくお願いします。

  • クリックした場所にFormを開く

    教えてください! VBでクリックした場所にFormを開くには、どうしたらいいですか? Private Sub Command3_Click() Frm.Show End Sub

  • ビジュアルベーシックのお絵かき掲示板

    まったくの初心者です。初歩的な質問で申し訳ありません。 カラーのところでクリックが実行できません。 なぜなのかよくわかりません。お暇なときご教授下さい。  そしてもう一つ質問ですが以下のコードを追加したいの ですがどこに挿入すればいいのですか。 →private sub image_click() ccolor = 7 end sub ここまでのコードを追加したいです。 ーーーーーーーーーーーーーーーーーーーーーーーーーー Private Sub Command1_Click() Form1.Cls End Sub Private Sub Command2_Click() End End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.DrawWidth = 3 If Button = 1 Then PSet (X, Y), QBColor(ccolor) End If End Sub Private Sub Label1_Click() cccolor = 14 End Sub Private Sub lavel2_click() cccolor = 0 End Sub Private Sub label3_click() ccolor = 9 End Sub Private Sub label4_click() ccolor = 12 End Sub Private Sub label5_click() ccolor = 10 End Sub

  • VB6でWSH(vbs)を起動できる方法を教えてください。

    visual Basic 6でアプリケーションを開発していますが、 このアプリケーション(exe)から、test.vbsを起動したいと考えています。 ====vbのコード===== 'ボタンクリックしたら、test.vbsが実行される Private Sub Command1_Click() shell("test.vbs") End Sub ==== test.vbs ==== MsgBox("test.vbs起動しました。") です。 上記のようにコードを書きましたが、Shell関数で 「実行時エラー'5' プロシージャの呼び出し、または引数が不正です。」 のメッセージが出力されて、vbsが起動できません。 VB6でWSH(vbs)を起動できる方法を教えてください。 環境は以下の通りです。 OS:WIN2000 アプリ:VB6 ブラウザ:IE5.0

専門家に質問してみよう