none
如何实现控制台程序的重启呢? RRS feed

  • 问题

  •      很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启。所谓重启就是杀死系统的当前进程,然后重新开一个新进程。下面是一个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);
    }
           现在我想知道的是如何实现一个控制台程序的重启呢?


    前无古人,后无来者

    2013年7月22日 13:48

答案

  • 与此类似,CreateProcess启动外部程序即可。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2013年7月23日 0:49
    版主