我正在尝试返回进程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 *'
我如何解决它,我尝试了几次不同的转换,但无法完成。
最佳答案
您正在尝试将宽字符串与窄字符串进行比较。由于ProcName
是窄字符串,因此必须是pe32.szExeFile
是宽字符串。不足为奇,因为Windows在内部使用宽字符。您应该将char* ProcName
更改为wchar_t* ProcName
,并使用wcscmp
而不是strcmp
。