1

プロセス 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 *'

どうすれば修正できますか、いくつかの異なる変換を試みましたが、できませんでした。

4

2 に答える 2

1

pe32.szExeFile通常のC 文字WCHAR列ではなく、明らかに文字列です。char *比較する前に変換する必要があります。または、文字列に変換ProcNameしてからWCHAR、ワイド文字列比較関数を使用します。

Visual Studioのドキュメントを簡単に確認すると、関数を探している可能性があることがわかりwcscmpます。

于 2013-09-23T20:41:01.353 に答える