delphi 重启

  第一步:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form1: TForm1;
//加一个重启标志
Restart_Flag: Boolean = false;

implementation

{$R *.dfm}

end.

第二步:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
//添加一个“重启”按钮
Button1: TButton;
procedure Button1Click(Sender: TObject);

  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form1: TForm1;
  //加一个重启标志
  Restart_Flag: Boolean = false;
implementation

{$R *.dfm}

//启动按钮的执行代码
procedure TForm4.Button1Click(Sender: TObject);
begin
Restart_Flag := True;
Close;
end;

end.

第三步:

program Project1;

uses
windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form4};

{$R *.res}
var
lpStartupInfo: TStartupInfo;
lpProcessInformation: TProcessInformation;

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
//添加重启代码
if Not Restart_Flag then Exit; //不需要重启
FillChar( lpStartupInfo,sizeof(lpStartupInfo),0);
FillChar(lpProcessInformation,sizeof(lpProcessInformation),0);
lpStartupInfo.cb:=sizeof(lpStartupInfo);
if CreateProcess(nil,PChar(Application.ExeName),nil,nil,false,0,nil,nil,lpStartupInfo,lpProcessInformation) then
begin
CloseHandle(lpProcessInformation.hThread);
CloseHandle(lpProcessInformation.hProcess);
end;
 
end.

如果是在程序当中有使用互斥对象,也可以在Application.Initialize前初始化,Application.Run之后清理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值