现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

VC实现程序重启的做法

2013-09-23 20:06 工业·编程 ⁄ 共 799字 ⁄ 字号 暂无评论

很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启。所谓重启就是杀死系统的当前进程,然后重新开一个新进程。同事探索了一下,实现了这个功能。我总结了一下他的经验。下面一个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);
}

给我留言

留言无头像?