No.2
- 回答日時:
単純解ですが、Shell関数でb.exeを起動後にEnd ステートメントを使ってa.exeを終了させ、
b.exe終了時にShell関数でa.exeを再び起動する、って風にしたらだめなのでしょうか。
No.3ベストアンサー
- 回答日時:
こんにちは。
maruru01です。APIを使ってShell関数で呼び出したプログラムを終了するまで、元のプログラムが待機している関数を自作しました。
a.vbpのForm1にb.exeを呼び出すためのコマンドボタン"cmdOpen"があるとします。
では。
Private Sub cmdOpen_Click()
Dim FullPath As String 'b.exeのフルパス
Form1.Visible = False
FullPath = "c:\b.exe"
WaitShell FullPath
Form1.Visible = True
End Sub
以下は標準モジュールに記述
Public Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
'【機能】 : 既存のプロセスオブジェクトのハンドルを返す
'【戻り値】 : (成功)指定したプロセスのオープンハンドル
' (失敗)NULL
Public Const PROCESS_QUERY_INFORMATION = &H400&
Public Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, _
lpExitCode As Long) As Long
'【機能】 : 指定されたプロセスの終了状態を返す
'【戻り値】 : (成功)0以外(終了していないときはSTILL_ACTIVEが格納される)
' (失敗)0
Public Const STATUS_PENDING = &H103&
Public Const STILL_ACTIVE = STATUS_PENDING
Public Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
'【機能】 : オープンしているオブジェクトハンドルをクローズする
'【戻り値】 : (成功)0以外
' (失敗)0
'アプリケーションを起動し、終了するまで待機する
Public Sub WaitShell(AppPath As String, Optional SizeFocusmode As Integer = vbNormalFocus)
Dim AppID As Long 'Shell関数の戻り値
Dim Process As Long 'OpenProcess関数の戻り値
Dim ExitCode As Long '終了コード
Dim rc As Long
AppID = Shell(AppPath, SizeFocusmode)
Process = OpenProcess(PROCESS_QUERY_INFORMATION, 1, AppID)
'プロセスが終了していない間はDoEvents関数でOSに制御を戻す
Do
rc = GetExitCodeProcess(Process, ExitCode)
DoEvents
Loop While ExitCode = STILL_ACTIVE
rc = CloseHandle(Process)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Pythonのコードをexe化 1 2023/07/03 08:01
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Windows 10 Windows11の実行モジュールはどこにある 1 2022/05/31 07:33
- その他(IT・Webサービス) エクセルの実行ファイルについての質問です。 1 2023/05/04 03:58
- Windows 10 exeファイルが起動しない 4 2022/06/05 16:13
- その他(セキュリティ) exeファイルの個人情報について 3 2023/06/29 17:36
- Android(アンドロイド) exeファイルを開けない 4 2023/03/11 14:33
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- その他(ソフトウェア) A列車でいこう9が起動できません 2 2022/06/15 16:33
- フリーソフト TJA-Player3 Develop Rewhite 2 2023/05/04 21:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンのプロセスの重複起動...
-
私のPCが覗かれているか調べる方法
-
vrserver.exeとWindowsセキュリ...
-
タスクマネージャに大量のプロ...
-
レジストリの起動項目にある「r...
-
■HijackThis v1.98.2での結果で...
-
Windows のプロセスexplorer.ex...
-
agent.exe
-
ar405jpn.exe
-
rundll32.exe oobefldrというの...
-
McAfee マカフィー ウィルスス...
-
パソコンから勝手に知らない音...
-
ファイルを削除しようとしたら ...
-
マカフィーで必要なファイルが...
-
まじで助けてください 凄い恥ず...
-
Trojan:Script/Wacatac.H!ml っ...
-
ハードディスクの問題が検出さ...
-
Everything というフリーソフト...
-
コマンドプロンプトでのBATファ...
-
至急お願いします。 僕はノート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンのプロセスの重複起動...
-
私のPCが覗かれているか調べる方法
-
勝手にC:\\WINDOWS\\system32\\...
-
「.exe」は捨ててよい?
-
NTRtScan.exeを常に停止させる...
-
タスクマネージャに大量のプロ...
-
Monitor.exe??
-
msiexec.exeはブロックした方が...
-
vrserver.exeとWindowsセキュリ...
-
conime.exeについて質問があり...
-
WindowsPCにインストールしたソ...
-
ctfmon.exeが2つある
-
ARK: Survival Evolvedで、サー...
-
実行ファイル
-
Dell Inspiron 3250でRealtekの...
-
「iexplore.exe」というプロセ...
-
setup.exeが見つかりません
-
rundll32.exe oobefldrというの...
-
ダイナブックでコントロールパ...
-
音楽ファイルが再生できない(VBA)
おすすめ情報