15,471
社区成员
发帖
与我相关
我的任务
分享
// 取进程
BOOL CHelpCenterApp::GetProcessID(CString ProcessName, DWORD &hProcID, DWORD &ParentID)
{
int con=0;
CString str;
PROCESSENTRY32 pe32;
pe32.dwSize=sizeof(pe32);
// 获得系统内所有进程快照
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
// 出错
return FALSE;
}
// 枚举列表中的第一个进程
BOOL bProcess=Process32First(hProcessSnap,&pe32);
while(bProcess)
{
str=pe32.szExeFile;
// 比较进程名,找到要找的进程名
if(ProcessName.CompareNoCase(str)==0)
{
con++; // 进程数加1
}
// 继续查找
bProcess=Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
if(con>1)
return TRUE; // 进程已经启动
else
return FALSE; // 进程没有启动
}
应用 例如:
name=_T("HelpCenter.exe"); // 获取本进程文件名
// 以查进程方式检查程序是否已经运行
BOOL bJudge=false;
DWORD procID; // 本进程ID
DWORD parentID; // 父进程ID
bJudge=GetProcessID(name,procID,parentID);
if(bJudge)
{
// 文件已经打开
AfxMessageBox(_T("程序已经运行!"));
exit(0);
}