![]() ![]() |
|
在c++程序中重启自己的一种方法 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:38:55 文章录入:杜斌 责任编辑:杜斌 | |
|
|
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(); } |
|
![]() ![]() |