DWORD CheckProIsExistingByName(LPCTSTR ProName)
{
CString strExeName;
char strProName[MAX_PATH] = {0};
GetModuleFileName(NULL,strProName, MAX_PATH);
strExeName.Format("%s", strProName);
int Index = strExeName.ReverseFind('\\');
strExeName = strExeName.Mid(Index +1);
if(strExeName.CompareNoCase(ProName) != 0)
{
CString strError;
strError.Format("程序名称被改变,正确的名称为\"%s\"",ProName);
AfxMessageBox(strError);
return 1;
}
//进程快照
PROCESSENTRY32 pe;
DWORD id = 0;
int ProcessNum = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(hSnapshot, &pe))
return 0;
while(TRUE)
{
pe.dwSize = sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot,&pe) == NULL)
return 0;
if(strcmp(pe.szExeFile, ProName) == 0)
{
ProcessNum++;
if(ProcessNum>1)
{
AfxMessageBox("已存在该程序!");
return 1;
}
}
}
CloseHandle(hSnapshot);
}
{
CString strExeName;
char strProName[MAX_PATH] = {0};
GetModuleFileName(NULL,strProName, MAX_PATH);
strExeName.Format("%s", strProName);
int Index = strExeName.ReverseFind('\\');
strExeName = strExeName.Mid(Index +1);
if(strExeName.CompareNoCase(ProName) != 0)
{
CString strError;
strError.Format("程序名称被改变,正确的名称为\"%s\"",ProName);
AfxMessageBox(strError);
return 1;
}
//进程快照
PROCESSENTRY32 pe;
DWORD id = 0;
int ProcessNum = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
if(!Process32First(hSnapshot, &pe))
return 0;
while(TRUE)
{
pe.dwSize = sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot,&pe) == NULL)
return 0;
if(strcmp(pe.szExeFile, ProName) == 0)
{
ProcessNum++;
if(ProcessNum>1)
{
AfxMessageBox("已存在该程序!");
return 1;
}
}
}
CloseHandle(hSnapshot);
}