本文整理自网络,侵删。
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);beginAppRestart;end;
相关阅读 >>
Delphi xe vcl - tlinklabel(链接标签)
更多相关阅读请进入《Delphi》频道 >>