所谓重启就是杀死系统的当前进程,然后重新开一个新进程。
void CTestRebootDlg::OnBnClickedButton1() { ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_SYSCOMMAND,SC_CLOSE,NULL); //获取exe程序当前路径 TCHAR szAppName[MAX_PATH]; :: GetModuleFileName(NULL, szAppName, MAX_PATH); std::wstring strCommandline = L"\"-scmd\" \"appid\" \"100\""; wchar_t pszCommandline[1024] = { 0 }; wcscpy_s(pszCommandline, strCommandline.c_str()); //重启程序 STARTUPINFO StartInfo; memset(&StartInfo, 0, sizeof(STARTUPINFO)); StartInfo.cb = sizeof(STARTUPINFO); PROCESS_INFORMATION procStruct; memset(&procStruct, 0, sizeof(PROCESS_INFORMATION)); // ::CreateProcessW( (LPCTSTR)szAppName, (LPWSTR)pszCommandline,//命令行参数放置于此 NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &StartInfo, &procStruct); }