| 529 | |
| 530 | |
| 531 | DWORD FindProcessIdByName(const std::wstring& processName) { |
| 532 | if (processName.empty()) { |
| 533 | LOG_A(LOG_ERROR, "FindProcessIdByName: Process name is empty"); |
| 534 | return 0; |
| 535 | } |
| 536 | |
| 537 | DWORD processId = 0; |
| 538 | HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); |
| 539 | if (hSnapshot == INVALID_HANDLE_VALUE) { |
| 540 | LOG_A(LOG_ERROR, "FindProcessIdByName: CreateToolhelp32Snapshot failed. Error: %lu", GetLastError()); |
| 541 | return 0; |
| 542 | } |
| 543 | |
| 544 | PROCESSENTRY32 pe = {}; |
| 545 | pe.dwSize = sizeof(PROCESSENTRY32); |
| 546 | if (Process32First(hSnapshot, &pe)) { |
| 547 | do { |
| 548 | if (!_wcsicmp(pe.szExeFile, processName.c_str())) { |
| 549 | processId = pe.th32ProcessID; |
| 550 | break; |
| 551 | } |
| 552 | } while (Process32Next(hSnapshot, &pe)); |
| 553 | } |
| 554 | else { |
| 555 | LOG_A(LOG_ERROR, "FindProcessIdByName: Process32First failed. Error: %lu", GetLastError()); |
| 556 | } |
| 557 | |
| 558 | CloseHandle(hSnapshot); |
| 559 | return processId; |
| 560 | } |