Как правильно получить запущенные процессы
int main()
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnap != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 proc;
proc.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(hSnap, &proc))
{
do
{
printf("%s\n", proc.szExeFile);
} while(Process32Next(hSnap, &proc));
}
}
}
На выходе я получаю случайные символы причём за один вывод выводится один символ. Что я делаю нет так и как правильно вывести процессы?
Ответы (1 шт):
Автор решения: Sergey Tatarincev
→ Ссылка
Вы почти все делаете так как надо. Единственное что надо понимать что вызываться будет не A вариант функции а W (Process32FirstW), которая работает с юникод строками. См https://docs.microsoft.com/en-us/windows/win32/intl/unicode-in-the-windows-api
Соответственно szExeFile в PROCESSENTRY32 будет не char[] а wchar[]
А теперь к вашему коду. Вам необходимо выводить юникод строку, и это делается так
printf("%ls\n", proc.szExeFile);