在c++程序中重启自己的一种方法
2010-05-07 12:38
302 查看
转自:http://www.ieehoo.com/Tech/167/View_109863.html#top
==============================================
在工程.cpp文件(Project1.cpp)中加入:
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 __fa
stcall TfrmMain::btnReExcuteClick(TObject *Sender)
{
g_bIsRunAgain = true;
Close();
}
==============================================
在工程.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 __fa
stcall TfrmMain::btnReExcuteClick(TObject *Sender)
{
g_bIsRunAgain = true;
Close();
}
相关文章推荐
- 在程序中重启自己的一种方法 (转载)
- C++中在程序中重启自己的一种方法
- 处理事件的方式:两种类的覆盖处理(自己管理,覆盖专用事件函数;自己统一管理,覆盖QWidget::Event通用函数),一种对象的处理(父控件统一管理,即安装过滤器),两种全局处理(QCoreApplication安装过滤器;覆盖notify方法)
- 孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(十五)——JSP基础语法 任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语
- wince中将自己的应用程序编译到内核并开机启动的一种方法
- system server ANR 一种分析方法 -- Android JVM异常重启简析
- 介绍一种巧妙的删除程序自己的方法
- 一种巧妙的删除程序自己的方法
- Android中重启程序自己的几种方法
- 一种巧妙的删除程序自己的方法
- 一种巧妙的删除程序自己的方法
- 介绍一种巧妙的删除程序自己的方法
- VC《介绍一种巧妙的删除程序自己的方法》 - 电脑教程 - 天天加油
- 一种巧妙的删除程序自己的方法
- system server ANR 一种分析方法 -- Android JVM异常重启简析
- 分析重启问题一种方法--------sc8810
- 一种巧妙的删除程序自己的方法
- 有一种方法叫“重启”
- java properties 的六种读取方法 以及一种自己最方便的实现
- 一种巧妙的删除程序自己的方法