Delphi 关闭自己,重新运行


本文整理自网络,侵删。

 
uses shellapi;


procedure KillProcess(hWindowHandle: HWND);
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
    SMTO_ABORTIFHUNG or SMTO_NORMAL, 500, DWResult);

  if isWindow(hWindowHandle) then
  begin
    { Get the process identifier for the window}
    GetWindowThreadProcessID(hWindowHandle, @hprocessID);
    if hprocessID <> 0 then
    begin
      { Get the process handle }
      processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION,
        False, hprocessID);
      if processHandle <> 0 then
      begin
        { Terminate the process }
        TerminateProcess(processHandle, 0);
        CloseHandle(ProcessHandle);
      end;
    end;
  end;
end;

procedure AppRestart;
var
  AppName : PChar;
begin
  AppName:=PChar(Application.ExeName);
  ShellExecute(Application.Handle, 'open', AppName, nil, nil, SW_SHOWNORMAL);
  KillProcess(Application.Handle);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
AppRestart;
end;

相关阅读 >>

Delphi 在windows平台下实现进程隐藏

Delphi 使用int3进行hook处理

Delphi下调用有返回值的存储过程

Delphi通过url获取网页源码

Delphi 2009 之 tstringbuilder 类[2]: append 与 appendformat

Delphi中从windows资源管理器中拖放图片到timage控件上

Delphi编解码js字符串

Delphi 实现窗口与任务栏右下角对齐

Delphi date 返回当前的日期

Delphi三层开发小技巧:tclientdataset的delta妙用

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...