所谓重启就是杀死系统的当前进程,然后重新开一个新进程。
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);
}