c++ - 按名称返回 PID

标签 c++ process return pid snapshot

我正在尝试返回进程 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/

相关文章:

c++ - 调用父覆盖函数的成本

c++ - 我应该怎么做才能使用新的命令提示符窗口获取新进程?

c++ - 如何查明长函数返回的位置

javascript - 当我在函数中返回 'this' 时,代码表现不同

java - 尝试在 Java 中返回分数(作为 float )

c++ - 在多个 OpenGL 窗口中显示不同的图形

c++ - 在 UNIX 中通过 recv/send 交换数据时如何正确使用缓冲区?

C++ SetProcessAffinityMask 使用所有处理器

内存效率与处理器效率

c++ - 在c++/分子中实现比分母大的有理数