VC结束进程

本进程可使用ExitProcess()结束进程

该函数具有强制性,在执行完毕后进程即被结束,因此位于其后的任何代码将不能被执行。虽然ExitProcess()函数可以在结束进程的同时通知与其关联的动态链接库,但是由于它的这种执行的强制性,使得ExitProcess()函数在使用上将存在有安全隐患。

其他进程可使用TerminateProcess()结束进程

示例:

void CMFCApplication4Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	//打开计算器
	ShellExecute(this->m_hWnd, _T("open"), _T("calc.exe"), NULL, NULL, SW_MAXIMIZE);
}


void CMFCApplication4Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	/*HWND theWindow = ::FindWindow(NULL, _T("计算器"));
	::SendMessage(theWindow, WM_CLOSE, NULL, NULL);*/

	HWND theWindow = ::FindWindow(NULL, _T("计算器"));
	DWORD processid;
	::GetWindowThreadProcessId(theWindow, &processid);
	HANDLE hprocessHandle = ::OpenProcess(PROCESS_TERMINATE, FALSE, processid);
	::TerminateProcess(hprocessHandle, 4);
	
}

使用findwindow查找一个窗口句柄,如果不知道要关闭进程的类名和标题,则可以使用spy++获取。

类名和标题,可以指输入一个,另一个参数置为NULL

找到这个窗口的句柄之后,有两种方式关闭进程。

1.向窗口发送WM_CLOSE消息

2.使用 TerminateProcess关闭进程。

    2.1 使用GetWindowThreadProcessId获取进程ID

    2.2 使用OpenProcess获取进程句柄

    2.3 使用TerminateProcess结束进程,第二个参数置为4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值