一般而言,在windows编程中,根据进程ID来结束进程,可以使用 TerminateProcess 来实现。示例代码:
void kill_process(int pid)
{
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid);
if (hProcess != NULL)
{
BOOL bOkey = TerminateProcess(hProcess, 0);
if(bOkey)
{
WaitForSingleObject(hProcess, 1000);
CloseHandle(hProcess);
hProcess = NULL;
}
}
}
但是,在XP系统下,有时候会出现OpenProcess返回为空的情况,这时候就只能采取其他手段来结束进程了!比如说使用taskkill命令:
-------------------------------------------------------华丽的分割线-------------------------------------------------------
启动IE的命令:
ShellExecute(NULL,"open","IEXPLORE.exe",NULL,NULL,SW_SHOWNORMAL);//启动IE
关闭IE的命令:
WinExec("taskkill /F /IM IEXPLORE.exe",SW_HIDE);//关闭IE
或者使用 system("taskkill /F /IM IEXPLORE.exe") 来结束进程。
taskkill 命令示例用法:
TASKKILL /IM notepad.exe
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T //根据pid来结束进程
TASKKILL /F /IM cmd.exe /T
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITYSYSTEM" /IM notepad.exe
TASKKILL /S system /U domainusername /FI "USERNAME ne NT*" /IM *
TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
Taskkill /?运行结果:
TASKKILL [/S system [/U username [/P [password]]]]
{ [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]
描述:
使用该工具按照进程 ID (PID) 或映像名称终止任务。
参数列表:
/S system 指定要连接到的远程系统。
/U [domain]user 指定应该在哪个用户上下文执行这个命令。
/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。
/FI filter 应用筛选器以选择一组任务。允许使用 "*"。例如,映像名称 eq acme*
/PID processid 指定要终止的进程的 PID。使用 TaskList 取得 PID。
/IM imagename 指定要终止的进程的映像名称。通配符 '*'可用来指定所有任务或映像名称。
/T 终止指定的进程和由它启用的子进程。
/F 指定强制终止进程。
/? 显示帮助消息。