C++中在程序中重启自己的一种方法

王朝c/c++·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

在工程.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;

//----------------------------------------------------------------------------

// 关闭程序

void __fastcall TfrmMain::BTnCloseClick(TObject *Sender)

{

Close();

}

//----------------------------------------------------------------------------

// 重启应用程序

void __fastcall TfrmMain::btnReExcuteClick(TObject *Sender)

{

g_bIsRunAgain = true;

Close();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航