在c++程序中重启自己的一种方法 |
|
www.nanhushi.com 佚名 不详 |
在工程.cpp文件(Project1.cpp)中加入: #include "Unit1.h" WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TfrmMain), &frmMain); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } if(g_bIsRunAgain) { AnsiString strPath; STARTUPINFO StartInfo; PROCESS_INFORMATION procStruct; memset(&StartInfo, 0, sizeof(STARTUPINFO)); StartInfo.cb = sizeof(STARTUPINFO); strPath = Application->ExeName; if(!::CreateProcess( (LPCTSTR) strPath.c_str(), NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &StartInfo, &procStruct)) return 0; } return 0; }
主窗口的单元头文件(Unit1.h)中加入: extern bool g_bIsRunAgain;
主窗口的单元.cpp(Unit1.cpp)中加入: bool g_bIsRunAgain = false; file://---------------------------------------------------------------------------- // 关闭程序 void __fastcall TfrmMain::btnCloseClick(TObject *Sender) { Close(); } file://---------------------------------------------------------------------------- // 重启应用程序 void __fastcall TfrmMain::btnReExcuteClick(TObject *Sender) { g_bIsRunAgain = true; Close(); }
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: C++箴言:用成员函数模板接受兼容类型 下一篇文章: 踏入C++中的雷区——C++内存管理详解 |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|