#include <windows.h>
#include <psapi.h>
#include <stdio.h>
long ProcessNameToPid(char ProcessName[])
{
DWORD ListProcess[128], nProcess;
size_t i;
EnumProcesses(ListProcess, sizeof(ListProcess), &nProcess);
nProcess /= sizeof(DWORD);
for(i=0;i<nProcess;i++)
{
char szProcessName[MAX_PATH];
HANDLE hProcess=OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION,
FALSE, ListProcess[i]);
if(hProcess)
{
HMODULE hMod;
DWORD unused;
if(EnumProcessModules(hProcess, &hMod, sizeof(hMod), &unused))
{
GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(char));
if(!strcmp(szProcessName, ProcessName))
return ListProcess[i];
}
CloseHandle(hProcess);
}
}
return 0;
}
int main(void)
{
long pid = ProcessNameToPid("smss.exe");
printf("Smss Pid : %x\n", pid);
return 0;
}