当前位置: 开源爱好者 » 编程教程 » VC++教程 » 正文

VC++ 启动并控制其它Exe程序

VC++ 启动并控制其它Exe程序,本例主要是通过对Windows记事本程序的打开和关闭控制,了解详细的操控外部程序的方法,这个代码是比较简单的类型:

void CCntrlOtherPrcssDlg::OnStart()
{
	PROCESS_INFORMATION pi;
	STARTUPINFO si;
	//初始化变量
	memset(&si,0,sizeof(si));
	si.cb=sizeof(si);
	si.wShowWindow=SW_SHOW;
	si.dwFlags=STARTF_USESHOWWINDOW;
	//打开记事本程序
	BOOL fRet=CreateProcess(NULL,
		"c:\\windows\\notepad.exe c:\\autoexec.bat",
		NULL,
		NULL,
		FALSE,
		NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,
		NULL,
		NULL,
		&si,
		&pi);
	if(!fRet)
	{//创建失败,显示错误信息
		LPVOID lpMsgBuf;
		FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
			FORMAT_MESSAGE_FROM_SYSTEM |
			FORMAT_MESSAGE_IGNORE_INSERTS,
			NULL,
			GetLastError(),
			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
			(LPTSTR) &lpMsgBuf,
			0,
			NULL );
		AfxMessageBox( (LPCTSTR)lpMsgBuf);
		LocalFree( lpMsgBuf );
	}
	else
	{
		AfxMessageBox("CreateProcess成功");
		m_hPro=pi.hProcess;
	}
}
void CCntrlOtherPrcssDlg::OnStop()
{
	//判断进程句柄是否合法
	if(m_hPro)
	{
		//根据句柄,终止刚才打开的记事本程序
		if(!TerminateProcess(m_hPro,0))
		{
			//终止出现错误,显示错误信息
			LPVOID lpMsgBuf;
			FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
						FORMAT_MESSAGE_FROM_SYSTEM |
						FORMAT_MESSAGE_IGNORE_INSERTS,
						NULL,
						GetLastError(),
						MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
						(LPTSTR) &lpMsgBuf,
						0,
						NULL );
			AfxMessageBox( (LPCTSTR)lpMsgBuf);
			LocalFree( lpMsgBuf );
		}
		else
		{
			AfxMessageBox("TerminateProcess成功");
		}
		m_hPro=NULL;
	}
	else
	{
		AfxMessageBox("m_hPro为空");
	}
}

CopyRight 2018© 开源爱好者 All Rights Reserved 豫ICP备16030607号 隐私声明 网站地图