Не ищется процесс
Я ищу PID процесса через функцию:
DWORD GetProcessByName(const char* process_name)
{
std::cout << process_name << std::endl;
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 process;
DWORD proc_id = 0;
std::cout << Process32First(snapshot, &process) << std::endl;
if (Process32First(snapshot, &process))
{
while (Process32Next(snapshot, &process))
{
if (_stricmp(process.szExeFile, process_name) == 0)
{
proc_id = process.th32ProcessID;
break;
}
}
}
CloseHandle(snapshot);
return proc_id;
}
Если я ввожу имя процесса вручную,то все находится:
char process_name[32];
std::cout << "enter process name: ";
std::cin >> process_name;
pID = GetProcessByName(process_name);
А если ищу процесс так,то ничего не находится: GetProcessByName("proc.exe");
причем если передавать строковую константу в функцию,то даже Process32First(snapshot, &process) почему то всегда равно нулю.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
А кто в структуре
PROCESSENTRY32 process;
будет делать это:
The calling application must set the
dwSizemember ofPROCESSENTRY32to the size, in bytes, of the structure.
Допишите:
PROCESSENTRY32 process;
process.dwSize = sizeof(PROCESSENTRY32);