[英]C++: How to check if a determined process is running
EDIT2:对于那些认为这是重复的人,不,不是。 这是在不同的上下文中进行的,知道是否正在运行某个进程,并且我不知道需要转换,直到这里“马丁”给我答案了:p
编辑:找到答案! https://stackoverflow.com/a/12637971/4908011
我正在使用Windows 7和Visual Studio 2013 Deluxe。 我似乎找不到任何使兼容的x32控制台应用程序找到进程的方法。
我需要知道某个进程是否正在运行,例如RobloxPlayerBeta.exe
。
我不断收到错误:
WCHAR *与const char *不兼容
在'strcmp(procEntry.szExeFile,name)'
我使用的代码:
bool ProcessRunning(const char* name)
{
HANDLE SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (SnapShot == INVALID_HANDLE_VALUE)
return false;
PROCESSENTRY32 procEntry;
procEntry.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(SnapShot, &procEntry))
return false;
do
{
if (strcmp(procEntry.szExeFile, name) == 0)
return true;
} while (Process32Next(SnapShot, &procEntry));
return false;
}
如果您的程序是针对Unicode编译的,则TCHAR
是宽字符类型,否则是窄字符类型。 使用VS2013创建新项目时,会将其设置为Unicode,因此TCHAR
很可能是宽字符类型。 最简单的解决方案是更改项目设置,以针对非Unicode进行编译。
现在编译时, TCHAR
将被设置为窄字符类型,并且您的代码也应编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.