如果某个进程没有运行,我不应该显示某些上下文菜单选项。我正在使用进程名称来检查进程是否正在运行。
但问题在于,在不同的Windows平台上,进程名称显示的方式不同。
例如,Windows任务栏上的64位进程名称为“ applicationname.exe”。
有些Windows XP机器显示相同的进程名称为“ applica〜2.exe”。
请告诉我一致的方法来检查进程是否正在运行?
我的开发环境是C++和Visual Studio 2010。
但问题在于,在不同的Windows平台上,进程名称显示的方式不同。
例如,Windows任务栏上的64位进程名称为“ applicationname.exe”。
有些Windows XP机器显示相同的进程名称为“ applica〜2.exe”。
请告诉我一致的方法来检查进程是否正在运行?
我的开发环境是C++和Visual Studio 2010。
DWORD getProcessID(const std::wstring& processName)
{
PROCESSENTRY32 info;
info.dwSize = sizeof(info);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if ( snapshot == INVALID_HANDLE_VALUE )
return 0;
Process32First(snapshot, &info);
if ( !processName.compare(info.szExeFile) )
{
CloseHandle(snapshot);
return info.th32ProcessID;
}
while ( Process32Next(snapshot, &info) )
{
if ( !processName.compare(info.szExeFile) )
{
CloseHandle(snapshot);
return info.th32ProcessID;
}
}
CloseHandle(snapshot);
return 0;
}
Module32First
吗?在这里可以看到szExeFile
的描述:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839(v=vs.85).aspx。 - hmjd