投稿時間:2004/06/18(Fri) 11:54 投稿者名:はこ
Eメール:
URL :
タイトル:Re: 同一PC上で起動しているEXEの確認
こんにちは。 今アプリ2が稼動中かどうかわかればいいってことですよね? 私は以前こんな方法で判定しました。 ↓
Public Function AppSearch(app_path As String) As Boolean Dim lngRet As Long Dim process(1023) As Long Dim lngSize As Long Dim process_cnt As Long Dim i As Long '現在稼動中のプロセスID取得 lngRet = EnumProcesses(process(0), UBound(process), lngSize) process_cnt = lngSize / 4 '取得したプロセスIDから実行ファイル名を抽出し、 '監視対象アプリが稼動中か判定 For i = 0 To process_cnt - 1 If GetProcessName(process(i)) = app_path Then AppSearch = True Exit For End If Next End Function
Public Function GetProcessName(ByVal ProcessID As Long) As String Dim hProcess As Long Dim hModules(1023) As Long Dim lngSize As Long Dim lngRet As Long Dim i As Long Dim ExeFileName(255) As Byte 'プロセスハンドルを取得する hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, False, ProcessID) If hProcess <> 0 Then If EnumProcessModules(hProcess, hModules(0), UBound(hModules), lngSize) <> 0 Then 'プロセスの実行ファイル名を取得する lngRet = GetModuleFileNameEx(hProcess, hModules(0), ExeFileName(0), UBound(ExeFileName)) GetProcessName = Left$(StrConv(ExeFileName, vbUnicode), lngRet) End If End If 'プロセスハンドルの開放 CloseHandle (hProcess) End Function
AppSearchに稼動中か判定したいexeファイルのパスを渡して、 Trueが返ってきたら稼動中で、Falseが返ってきたら稼動して ないってことなんですけど、こんなんどうですか?
※APIや定数の定義は省略しています。
--- 開発環境 WinXPPro SP1 VB6.0 SP5
|