Is there any function in psapi or windows.h to get desired process' is running via only the process name (e.g : "chrome.exe") without getting all processes.
Edit:
If any one requires to get the desired process information via running through the list of all processes I can paste my code here. it works on a xp-machine and compiled with vs 2008.
I have found a solution for my question, too ! But according to the msdn the function runs already through the processes and checks the name without the extension. Shortly it searchs for "chrome" and returns the list of chrome.*
This function has a nice advantage it returns the process in a list, it might be an exe may run with may instances. Disadvantage CLR is required, it runs slower than the psapi functions and it has extra convertion requirements such as String^ to wchar or String (which I have not tested)
the above answer works on win 8. here it is without the wstring stuff and stripping off the path
#include <tlhelp32.h>
DWORD FindProcessId(char* processName)
{
// strip path
char* p = strrchr(processName, '\\');
if(p)
processName = p+1;
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if ( processesSnapshot == INVALID_HANDLE_VALUE )
return 0;
Process32First(processesSnapshot, &processInfo);
if ( !strcmp(processName, processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
while ( Process32Next(processesSnapshot, &processInfo) )
{
if ( !strcmp(processName, processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processesSnapshot);
return 0;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With