delphi 关闭自己,重新运行  
官方Delphi 学习QQ群: 682628230(三千人)
频道

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;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.16202878952026 seconds