с++ Аргумент типа "const wchar_t"* несовместим с параметром типа "wchar_t"

не могу вызвать "GetProcessByExeName"

DWORD GetProcessByExeName(wchar_t* ExeName)
{
PROCESSENTRY32W pe32;
pe32.dwSize = sizeof(PROCESSENTRY32W);

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
    MessageBoxW(NULL, L"Error CreateToolhelp32Snapshot", L"error", MB_OK);
    return false;
}

if (Process32FirstW(hProcessSnap, &pe32))
{
    do
    {
        if (_wcsicmp(pe32.szExeFile, ExeName) == 0)
        {
            CloseHandle(hProcessSnap);
            return pe32.th32ProcessID;
        }
    } while (Process32NextW(hProcessSnap, &pe32));
}

CloseHandle(hProcessSnap);
return 0;

}

Вызывая так GetProcessByExeName(L"chrome.exe"); пишет -> Аргумент типа "const wchar_t"* несовместим с параметром типа "wchar_t"


Ответы (2 шт):

Автор решения: danrom11
DWORD GetProcessByExeName(const wchar_t* ExeName)
{
PROCESSENTRY32W pe32;
pe32.dwSize = sizeof(PROCESSENTRY32W);

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
    MessageBoxW(NULL, L"Error CreateToolhelp32Snapshot", L"error", MB_OK);
    return false;
}

if (Process32FirstW(hProcessSnap, &pe32))
{
    do
    {
        if (_wcsicmp(pe32.szExeFile, ExeName) == 0)
        {
            CloseHandle(hProcessSnap);
            return pe32.th32ProcessID;
        }
    } while (Process32NextW(hProcessSnap, &pe32));
}

CloseHandle(hProcessSnap);
return 0;
}
→ Ссылка
Автор решения: AndryS1

Решение 1: записать значение в переменную, а потом вызвать функцию

    wchar_t* str = new wchar_t[] {L"chrome.exe"};
    GetProcessByExeName(str);

Решение 2: добавить const в прототипе функций, что скажет компилятору: "Эта функция не меняет значения по передаваемому указателю"

DWORD GetProcessByExeName(const wchar_t* ExeName)
{
PROCESSENTRY32W pe32;
pe32.dwSize = sizeof(PROCESSENTRY32W);

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
    MessageBoxW(NULL, L"Error CreateToolhelp32Snapshot", L"error", MB_OK);
    return false;
}

if (Process32FirstW(hProcessSnap, &pe32))
{
    do
    {
        if (_wcsicmp(pe32.szExeFile, ExeName) == 0)
        {
            CloseHandle(hProcessSnap);
            return pe32.th32ProcessID;
        }
    } while (Process32NextW(hProcessSnap, &pe32));
}

CloseHandle(hProcessSnap);
return 0;
}

Вызывать в таком случае, как вы хотели раньше

→ Ссылка