BOOL CTbsDlg::IsOpen(CString strFindFile )
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
return FALSE;
}
BOOL bMore = Process32First( hProcessSnap,&pe32 );
while(bMore)
{
bMore = Process32Next( hProcessSnap,&pe32 );
CString strExeFile;
strExeFile.Format("%s",pe32.szExeFile);
if( strExeFile.CompareNoCase(strFindFile) == 0 )
{
CloseHandle( hProcessSnap );
return TRUE;
}
}
CloseHandle( hProcessSnap );
return FALSE;
}
上面只是判断指定EXE文件名进程是否启动,若要判断指定路径EXE进程是否启动则要用MODULEENTRY32。如下:
BOOL CTbsDlg::IsOpen( CString strFindFile )
{
int nPos = strFindFile.ReverseFind('\\