Skip to content

Instantly share code, notes, and snippets.

@peta909
Created January 22, 2019 07:17
Show Gist options
  • Save peta909/1f1716d0e8f41cc93cd6f5e74f081cf9 to your computer and use it in GitHub Desktop.
Save peta909/1f1716d0e8f41cc93cd6f5e74f081cf9 to your computer and use it in GitHub Desktop.
Function to locate PID based on given process name in string
int LocateProcess(wchar_t* proc)
{
// Need to add #include <tlhelp32.h> for PROCESS* definitions
HANDLE hProcessSnap;
HANDLE hProcess;
PROCESSENTRY32 pe32;
DWORD dwPriorityClass;
int FoundPID;
// Take a snapshot of all processes in the system.
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp32Snapshot (of processes)");
return(FALSE);
}
// Set the size of the structure before using it.
pe32.dwSize = sizeof(PROCESSENTRY32);
// Retrieve information about the first process,
// and exit if unsuccessful
if (!Process32First(hProcessSnap, &pe32))
{
printf("Process32First"); // show cause of failure
CloseHandle(hProcessSnap); // clean the snapshot object
return(FALSE);
}
// Now walk the snapshot of processes, and
// display information about each process in turn
do
{
if (wcscmp(pe32.szExeFile, proc) == 0)
{
//_tprintf(TEXT("\n\n====================================================="));
//_tprintf(TEXT("\nPROCESS NAME: %s"), pe32.szExeFile);
//_tprintf(TEXT("\n-------------------------------------------------------"));
// Retrieve the priority class.
dwPriorityClass = 0;
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
if (hProcess == NULL)
printf("OpenProcess");
else
{
dwPriorityClass = GetPriorityClass(hProcess);
if (!dwPriorityClass)
printf("GetPriorityClass");
CloseHandle(hProcess);
}
FoundPID = pe32.th32ProcessID;
}
} while (Process32Next(hProcessSnap, &pe32));
CloseHandle(hProcessSnap);
return(FoundPID);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment