// Check if we found the right process
if (sCompare == sProcesFilename)
{
// If we are not in hidden mode
if (bAskUser)
{
// Set up confirmation text
sTemp.Format(pLanguage->GetString(IDS_CONFIRMATION_CLOSEAPPLICATION_EXPLANATION),
sAppToClose, sAppToUpdate, sAppToClose);
// Get handle to process
HANDLE hProcess = OpenProcess
(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
// Exit process
DWORD exCode;
GetExitCodeProcess(hProcess, &exCode);
TerminateProcess(hProcess, exCode);
// Wait until process is finished
if (WaitForSingleObject(hProcess, 30000) == WAIT_TIMEOUT)
return false;
}
} while (Process32Next(hProcessSnap, &pe32));
}
else
{
return false;
}
Public Function GetJingCheng(Exename As String) As String ' 取得进程
Dim i As Long
Dim theloop As Long
Dim proc As PROCESSENTRY32
Dim snap As Long
Dim Lent As Integer
Lent = Len(Trim(Exename))
GetJingCheng = "" '清空所有内容
snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) '获得进程“快照”的句柄
proc.dwSize = Len(proc)
theloop = ProcessFirst(snap, proc) '获取第一个进程,并得到其返回值
While theloop <> 0 '当返回值非零时继续获取下一个进程
If Left(proc.szExeFile, Lent) = Exename Then
GetJingCheng = proc.th32ProcessID
End If
theloop = ProcessNext(snap, proc)
Wend
CloseHandle snap '关闭进程“快照”句柄
End Function
Private Sub DealEvent()'可以加入到时间控件中作为实时监控
'ProcessName为指定监视的进程名
Id = Val(GetJingCheng(ProcessName))
If Id <> 0 Then
'说明进程正在运行
'在这里加入对指定进程的处理代码
End If