Ошибка при поиске процесса по названию

113
17 мая 2021, 19:00

Пытаюсь получить process id следующим образом:

DWORD FindProcessId(string processName)
{
    PROCESSENTRY32 processInfo;
    processInfo.dwSize = sizeof(processInfo);
    HANDLE processSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    if (processSnapshot == INVALID_HANDLE_VALUE)
        return 0;
    Process32First(processSnapshot, &processInfo);
    if (!processName.compare(processInfo.szExeFile))
    {
        CloseHandle(processSnapshot);
        return processInfo.th32ProcessID;
    }
    while (Process32Next(processSnapshot, &processInfo))
    {
        if (!processName.compare(processInfo.szExeFile))
        {
            CloseHandle(processSnapshot);
            return processInfo.th32ProcessID;
        }
    }
    CloseHandle(processSnapshot);
    return 0;
}

Но ругается на string process name:

невозможно преобразовать аргумент 1 из "WCHAR [260]" в "const _Elem *const " with [ _Elem=char ]

Как его объявить правильно?

Answer 1

Несоответствие используемых строк C и C++.

Или компилируйте БЕЗ поддержки Unicode, просто ANSI (тогда C-строки будут char*, а не wchar_t*), или используйте соответствующие строки C++ - не string, а wstring.

READ ALSO
Ошибка в коде С++. В какую сторону копать? [закрыт]

Ошибка в коде С++. В какую сторону копать? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

82
SD2/SDL_Events C++ Чтение событий с клавиатуры

SD2/SDL_Events C++ Чтение событий с клавиатуры

Такая проблемка: В проге есть объект- игрок, он умеет двигатьсяИ вот, при зажатой клавише W,A,S,D он начинает двигаться с небольшой задержкой(как...

225
suggest JavaScript непрозрачное поле

suggest JavaScript непрозрачное поле

Проблема в следующемИспользую скрипт:

90