#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;
}