![]() |
RunProcess mit Benachrichtigung beim Beenden
Hallo zusammen
Gibt es bei ![]() Gruss Shaman |
Re: RunProcess mit Benachrichtigung beim Beenden
Zitat:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } procedure RunProcessExit(Sender: TObject); public { Public-Deklarationen } end; TRunProcessThread = class(TThread) private FFileName: String; FOnProcessExit: TNotifyEvent; procedure UpdateVCL; protected procedure Execute; override; public constructor Create; property FileName: String read FFileName write FFileName; property OnProcessExit: TNotifyEvent read FOnProcessExit write FOnProcessExit; end; var Form1: TForm1; implementation {$R *.dfm} { TRunProcessThread } constructor TRunProcessThread.Create; begin inherited Create(True); end; procedure TRunProcessThread.Execute; var SI: TStartupInfo; PI: TProcessInformation; begin FillChar(SI, SizeOf(TStartupInfo), 0); SI.cb := SizeOf(TStartupInfo); if CreateProcess(nil, PChar(FFileName), nil, nil, False, 0, nil, nil, SI, PI) then begin WaitForSingleObject(PI.hProcess, INFINITE); if Assigned(FOnProcessExit) then Synchronize(UpdateVCL); CloseHandle(PI.hProcess); CloseHandle(PI.hThread); end; end; procedure TRunProcessThread.UpdateVCL; begin FOnProcessExit(Self); end; { TForm1 } procedure TForm1.RunProcessExit(Sender: TObject); begin ShowMessage('Programm wurde beendet'); end; procedure TForm1.Button1Click(Sender: TObject); begin with TRunProcessThread.Create do begin FreeOnTerminate := True; OnProcessExit := RunProcessExit; FileName := 'C:\WINDOWS\SYSTEM32\NOTEPAD.EXE'; Resume; end; end; end. |
Re: RunProcess mit Benachrichtigung beim Beenden
Hoi
An einen Thread habe ich auch gedacht, wollte nur wissen, ob es noch etwas anderes gibt. Aber vielen Dank :-) Gruss Shaman |
Re: RunProcess mit Benachrichtigung beim Beenden
Wer behauptet denn, daß man nur synchron auf das Ende des Prozesses warten kann? Schau dir doch die Funktionsbeschreibungen der in beliebigen Beispielen zum Thema verwendeten API-Funktionen mal näher an. Und selbst synchron geht asynchron indem das Warten in einen Thread ausgelagert wird ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz