ページ 1 / 1
プログラムの終了を待ってから次のプログラムを起動する方法
Posted: 2007年5月07日(月) 11:02
by ひとみ
皆様お世話になります。
外部EXE(AとB)を、Aを起動→Aを終了→Bを起動 という風にしたいのですが、
Execを使用すると、Aの終了を待たずにBが起動してしまいます。
何かやり方は有りますでしょうか? 簡単に。
Exec "A.exe"
Exec "B.exe"
END
Posted: 2007年5月07日(月) 11:20
by ひとみ
お世話になります。
ShellExecute(NULL, "open", "C.BAT","", NULL, SW_HIDE)
END
より
以下の、C.BAT を呼ぶ事により解決しました。
start /WAIT A.exe
start B.exe
Posted: 2007年5月08日(火) 10:47
by ゲスト
ミューテックスを使用し、A.exeの終了を監視する方法が有ります。
詳しくは、過去ログを「ミューテックス」か「多重起動」を等で検索してみてください。
Posted: 2007年5月15日(火) 08:21
by ノッチ
以下のようなコードで終了を待ってから次のアプリケーションを実行します。
例ではメモ帳を実行後、終了を待って電卓を実行します。
そのままだとアプリケーションが固まってしまうのでスレッドで実行なりしてください。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Declare Function ShellExecuteEx Lib "shell32" Alias "ShellExecuteExA" ( _
ByRef lpExecInfo As SHELLEXECUTEINFO _
) As Long
Type SHELLEXECUTEINFO
cbSize As DWord
fMask As DWord
hWnd As HWND
lpVerb As BytePtr
lpFile As BytePtr
lpParameters As BytePtr
lpDirectory As BytePtr
nShow As Long
hInstApp As HINSTANCE
lpIDList As VoidPtr
lpClass As BytePtr
hkeyClass As HKEY
dwHotKey As DWord
hIcon As HICON
hProcess As HANDLE
End Type
Const SEE_MASK_NOCLOSEPROCESS = &H40
Dim sei As SHELLEXECUTEINFO
ZeroMemory(VarPtr(sei),Len(sei))
sei.cbSize=Len(sei)
sei.fMask=SEE_MASK_NOCLOSEPROCESS
sei.lpFile="notepad"
sei.nShow=SW_SHOWNORMAL
ShellExecuteEx(sei)'メモ帳実行
WaitForSingleObject(sei.hProcess,INFINITE)'終了待ち
sei.lpFile="calc"
ShellExecuteEx(sei)'電卓実行