我正在尝试返回进程 ID,并且我有这段代码。我做错了什么?
代码是:
DWORD GetProcId(char* ProcName)//Get ProcessId By Name
{
PROCESSENTRY32 pe32;
HANDLE hSnapshot = NULL;
pe32.dwSize = sizeof( PROCESSENTRY32 );
hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if( Process32First( hSnapshot, &pe32 ) )
{
do{
if( strcmp( pe32.szExeFile, ProcName ) == 0 )
{
return pe32.th32ProcessID;
}
}while( Process32Next( hSnapshot, &pe32 ) );
}
if( hSnapshot != INVALID_HANDLE_VALUE )
CloseHandle( hSnapshot );
return 0;
}
错误是'strcmp': cannot convert parameter 1 from 'WCHAR [260]' to 'const char *'
我该如何解决它,我尝试了几种不同的转换但无法解决。
最佳答案
pe32.szExeFile
显然是一个 WCHAR
字符串,而不是一个普通的 char *
C 字符串。您需要在比较之前对其进行转换。或者,将 ProcName
转换为 WCHAR
字符串,然后使用宽字符串比较函数。
快速检查 Visual Studio documentation表明您可能正在寻找 wcscmp
函数。
关于c++ - 按名称返回 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18968383/