MCPcopy Create free account
hub / github.com/dobin/RedEdr / FindProcessIdByName

Function FindProcessIdByName

RedEdrShared/process_query.cpp:531–560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

529
530
531DWORD 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}

Callers 2

TEST_CLASSFunction · 0.85
TEST_METHODFunction · 0.85

Calls 2

emptyMethod · 0.80
LOG_AFunction · 0.50

Tested by 2

TEST_CLASSFunction · 0.68
TEST_METHODFunction · 0.68