c++ 怎么样获取windows指定程序是否正在运行?
2个回答
推荐于2016-06-14 · 知道合伙人软件行家
关注
展开全部
void _FindProcess(const CString& strProcessName,CArray<DWORD,DWORD>& aPid)
{
aPid.RemoveAll();
DWORD dwPid = 0; //用于保存Id
CString strExeFile;
HANDLE hHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //为当前系统进程建立快照
DWORD dwId = ::GetCurrentProcessId(); //当前进程的Id
if (INVALID_HANDLE_VALUE !=hHandle) //如果快照建立成功
{
PROCESSENTRY32 stEntry;
stEntry.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hHandle, &stEntry)) //在快照中查找一个进程,stEntry返回进程相关属性和信息
{
do
{
strExeFile.Format("%s",stEntry.szExeFile);
if(strProcessName.CompareNoCase(strExeFile)==0) //比较该进程名称是否与strProcessName相符
{
if(dwId != stEntry.th32ProcessID) //如果相等,且该进程的Id与当前进程不相等,则找到strProcessName对应的进程。
{
aPid.Add(stEntry.th32ProcessID);
}
}
}while(Process32Next(hHandle, &stEntry));//再快照中查找下一个进程。
}
CloseHandle(hHandle); //释放快照句柄。
}
return ;
}
上面是查找进程名.你稍修改一下就可以用了.满意请采纳
{
aPid.RemoveAll();
DWORD dwPid = 0; //用于保存Id
CString strExeFile;
HANDLE hHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //为当前系统进程建立快照
DWORD dwId = ::GetCurrentProcessId(); //当前进程的Id
if (INVALID_HANDLE_VALUE !=hHandle) //如果快照建立成功
{
PROCESSENTRY32 stEntry;
stEntry.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hHandle, &stEntry)) //在快照中查找一个进程,stEntry返回进程相关属性和信息
{
do
{
strExeFile.Format("%s",stEntry.szExeFile);
if(strProcessName.CompareNoCase(strExeFile)==0) //比较该进程名称是否与strProcessName相符
{
if(dwId != stEntry.th32ProcessID) //如果相等,且该进程的Id与当前进程不相等,则找到strProcessName对应的进程。
{
aPid.Add(stEntry.th32ProcessID);
}
}
}while(Process32Next(hHandle, &stEntry));//再快照中查找下一个进程。
}
CloseHandle(hHandle); //释放快照句柄。
}
return ;
}
上面是查找进程名.你稍修改一下就可以用了.满意请采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |