有时知道一个进程的名称,需要通过该名称来获取该进程,可以使用如下代码:
int MainWindow::GetProcessidFromName(constchar*name)
{
char control[256];int id=0;int iLength;PROCESSENTRY32 pe;//获取系统中正在运行的进程信息HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);pe.dwSize=sizeof(PROCESSENTRY32);//获取第一个进程的句柄if(!Process32First(hSnapshot,&pe))return 0;while(1){pe.dwSize=sizeof(PROCESSENTRY32);//WideCharToMultiByte将pe.szExeFile转换为ANSI//获取字节长度 使用CP_ACP代码页就实现了ANSI与Unicode之间的转换iLength = WideCharToMultiByte(CP_ACP, 0, pe.szExeFile, -1, NULL, 0, NULL, NULL);//将tchar值赋给_charWideCharToMultiByte(CP_ACP, 0, pe.szExeFile, -1, control, iLength, NULL, NULL);if(strcmp(control,name)==0){//该进程名称是要查找的进程名称id=pe.th32ProcessID;break;}//获取下一个进程的句柄if(Process32Next(hSnapshot,&pe)==FALSE)break;}//释放进程信息句柄CloseHandle(hSnapshot);return id;}