这段代码运行后为什么假死?
void tp(long pid){HANDLE phandle=OpenProcess(PROCESS_ALL_ACCESS,False,pid);TerminateProcess(phandle,0);}void __fastcall TForm1::Button1Click(TObject *Sender){char pname[2048];long pid;strcpy(pname,Edit1->Text.c_str());PROCESSENTRY32 pe32;//在使用这个结构前,先设置它的大小 pe32.dwSize = sizeof(pe32);//给系统内所有的进程拍个快照 HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);if (hProcessSnap == INVALID_HANDLE_VALUE){MessageBox(NULL,"函数调用错误!","错误",MB_OK);}BOOL bMore = Process32First(hProcessSnap,&pe32);while (bMore){if (pe32.szExeFile == pname){pid=pe32.th32ProcessID;} else {Process32Next(hProcessSnap,&pe32);}}tp(pid);CloseHandle(hProcessSnap);}
while (bMore){ if (pe32.szExeFile == pname) { pid=pe32.th32ProcessID; break; } else { bMore = Process32Next(hProcessSnap,&pe32); }}
[解决办法]
//得到快照第一个进程信息 Process32First(hProcessSnap,&pe32); do { if(lstrcmpi(pe32.szExeFile,pname)==0) //比较两个字符串,此比较不区分大小写; { pid=pe32.th32ProcessID; break; } }while(Process32Next(hProcessSnap,&pe32));//获取下一个