作者:朱金灿
来源:http://blog.csdn.net/clever101
很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启。所谓重启就是杀死系统的当前进程,然后重新开一个新进程。同事探索了一下,实现了这个功能。我总结了一下他的经验。下面一个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.如何自动重启程序