【VS开发】VC实现程序重启的做法
转载地址:http://blog.csdn.net/clever101/article/details/9327597
很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启。所谓重启就是杀死系统的当前进程,然后重新开一个新进程。同事探索了一下,实现了这个功能。我总结了一下他的经验。下面一个MFC的对话框程序的按钮响应函数说明如何实现。
- // 重启按钮响应函数
- void CTestRebootDlg::OnBnClickedReboot()
- {
- // TODO: 在此添加控件通知处理程序代码
- ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_SYSCOMMAND,SC_CLOSE,NULL);
- //获取exe程序当前路径
- extern CTestRebootApp theApp;
- TCHAR szAppName[MAX_PATH];
- :: GetModuleFileName(theApp.m_hInstance, szAppName, MAX_PATH);
- CString strAppFullName;
- strAppFullName.Format(_T("%s"),szAppName);
- //重启程序
- STARTUPINFO StartInfo;
- PROCESS_INFORMATION procStruct;
- memset(&StartInfo, 0, sizeof(STARTUPINFO));
- StartInfo.cb = sizeof(STARTUPINFO);
- ::CreateProcess(
- (LPCTSTR)strAppFullName,
- NULL,
- NULL,
- NULL,
- FALSE,
- NORMAL_PRIORITY_CLASS,
- NULL,
- NULL,
- &StartInfo,
- &procStruct);
- }
参考文献:
1.如何自动重启程序