打印本文 打印本文  关闭窗口 关闭窗口  
在c++程序中重启自己的一种方法
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:38:55  文章录入:杜斌  责任编辑:杜斌

  在工程.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(); 
  } 
打印本文 打印本文  关闭窗口 关闭窗口