投稿日 | : 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