想对来说,win平台上的进程管理比linux上简单很多。
#include <TlHelp32.h>
void showall()
{
PROCESSENTRY32 pe32={0}; //进程
pe32.dwSize = sizeof(pe32); //设置机构体大小
HANDLE hprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //创建当前进程快照
BOOL bmore = Process32First(hprocess, &pe32); //寻找, 通过指针改变外部变量
while(bmore)
{
printf("%s,%d", pe32.szExefile, pe32.th32ParentProcessID);
bmore = Process32Next(hprocess, &pe32); //查找下一个
}
// 编号为0的是系统进程
CloseHandle(hprocess);
}
void close(char *name)
{
PROCESSENTRY32 pe32 = {0}; //进程
pe32.dwSize = sizeof(pe32); //设置机构体大小
HANDLE hprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //创建当前进程快照
BOOL bmore = Process32First(hprocess, &pe32); //寻找, 通过指针改变外部变量
while(bmore)
{
if (strcmp(pe32.szExefile, name) == 0)
{
// 打开进程
HANDLE hpro = OpenProcess(PROCESSS_ALL_ACCESS, FALSH, pe32.th32ProcessID);
// 结束进程
TerminateProcess(hpro, 0);
CloseHandle(hpro);
break ;
}
bmore = Process32Next(hprocess, &pe32); //查找下一个
}
CloseHandle(hprocess);
}
void closebyid(unsigned long id)
{
PROCESSENTRY32 pe32 = {0}; //进程
pe32.dwSize = sizeof(pe32); //设置机构体大小
HANDLE hprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //创建当前进程快照
BOOL bmore = Process32First(hprocess, &pe32); //寻找, 通过指针改变外部变量
while(bmore)
{
if (pe32.th32ProcessID == id)
{
// 打开进程
HANDLE hpro = OpenProcess(PROCESSS_ALL_ACCESS, FALSH, pe32.th32ProcessID);
// 结束进程
TerminateProcessId(hpro, 0);
CloseHandle(hpro);
break ;
}
bmore = Process32Next(hprocess, &pe32); //查找下一个
}
CloseHandle(hprocess);
}
void main()
{
showall();
close("QQ.exe");
system("pause");
}