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

文章作者 100test 发表时间 2008:03:03 10:39:01
来源 100Test.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().
  }

相关文章


2007年注册会计师考前两周计划与安排
奥运用语系列:德语常用100句(下)
四方会谈----托福考试之口语
奥运用语系列:德语常用100句(上)
在c++程序中重启自己的一种方法
踏入C 中的雷区——C 内存管理详解
C 编程人员容易犯的10个C#错误
C 箴言:用成员函数模板接受兼容类型
:07年注会师税法预测试卷(三)答案
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛