1. 程式人生 > >VS2010 MFC Dialog實現程式自動重啟

VS2010 MFC Dialog實現程式自動重啟

    VS2010 MFC Dialog 做了一個小專案,需要實現自動重啟,搜了一些文章,各有優缺點,所以將這些文章做了一下簡單的綜合,下面是自己的實現過程,並附上了參考文章連結,希望能給新手帶來幫助。


1. 先建一個VS2010 MFC Dialog 工程,此處之所以強調VS2010 是因為字元編碼預設採用Unicode,即寬字元格式,如果在像VC6這種ANSI編碼的直接看本文附的 "參考文章"即可。

具體實現過程不在贅述。


      2. 定義 全域性變數  bool g_bIsRunAgain = false; 此處也可以定義為主對話方塊的成員變數,並在OnInitDialog中初始化為false.


     3.  主窗體新增 “重啟” 按鈕,並雙擊新增程式碼如下:

     g_bIsRunAgain=true;//控制是否重新執行的變數
     this->SendMessage(WM_CLOSE);


    4. 在類嚮導中新增WM_CLOSE 訊息,在OnClose()中新增如下程式碼:


if(g_bIsRunAgain)
     {
        //得到當前程式的路徑;
    wchar_t strPath[100]; 

    GetModuleFileName(NULL,strPath,100);
        
STARTUPINFO StartInfo;
        PROCESS_INFORMATION procStruct;
        memset(&StartInfo, 0, sizeof(STARTUPINFO));
        StartInfo.cb = sizeof(STARTUPINFO);
       
if( CreateProcess( (LPCTSTR) strPath,NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&StartInfo,&procStruct ) )
{
CloseHandle( procStruct.hProcess );
CloseHandle( procStruct.hThread );
}
     }


CDialogEx::OnClose();




5. 除錯執行即可實現重啟功能。


參考文章:https://blog.csdn.net/foreverhuylee/article/details/22311161


  https://blog.csdn.net/lvwx369/article/details/41865981


版權宣告:本文為博主原創文章,轉載請註明出處。