WEB开发网
开发学院软件开发C++ 在程序中重启自己的一种方法 阅读

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

 2008-03-08 21:25:14 来源:WEB开发网   
核心提示:在工程.cpp文件(PRoject1.cpp)中加入: #include "Unit1.h" WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize();

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

Tags:程序 重启 自己

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接