Вывод всех процессов через Process32FirstW - ничего не выводит и закрывает консоль
Код компилируется, но ничего не выводит (Кроме TEST) и завершает программу с кодом 3221225477
Нужно выводить именно в юникоде.
Process32First работает корректно, но процессы с кириллицей пропускает.
Код:
#include <windows.h>
#include <tlhelp32.h>
#include <string>
#include <iostream>
#include <io.h>
#include <fcntl.h>
using namespace std;
wstring getProcesses () {
LPPROCESSENTRY32W process;
HANDLE tool = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
wstring temp;
if (tool == INVALID_HANDLE_VALUE) return L"?";
process->dwSize = sizeof(LPPROCESSENTRY32W);
Process32FirstW(tool, process);
temp = process->szExeFile + L'\n';
while (Process32NextW(tool, process)) {
temp += process->szExeFile;
temp += L'n';
}
return temp;
}
int main () {
setmode(_fileno(stdout), _O_U16TEXT);
setmode(_fileno(stdin), _O_U16TEXT);
setmode(_fileno(stderr), _O_U16TEXT);
wcout << L"TEST - Я Ъ ї Ю Ґ";
wcout << getProcesses();
wcin.get();
return 0;
}
Источник: Stack Overflow на русском