![]() |
.exe per Delphi starten und ProzessID aufzeichen
Hallo,
ich bin gerade dabei ein CounterStrike Webinterface für Windows zu schreiben und mir fällt grad ein Problem auf. Wenn der User auf "Server Starten" klickt, dann hatte ich eigentlich vor, per shellexecute hlds.exe mit den entsprechenden Parametern den Server zu starten. Nur aber wenn der User auf "Server Stoppen" klickt, muss das Serverprogramm eigentlich geschlossen werden. Wäre ja mit dem Konsolenbefehl taskkill kein Problem, aber was ist, wenn mehrere Server laufen. Delphi würde ja gar nicht wissen, welcher Prozess gemeint ist und beendet unter Umständen den falschen Server. Die frage nun... kann man über Delphi einen Prozess starten und von diesem gestartetem Prozess die Prozess ID speichern, dass dann beim Stoppen Delphi genau sagen kann, welcher Prozess nun gestoppt werden soll.... MFG Björn |
Re: .exe per Delphi starten und ProzessID aufzeichen
|
Re: .exe per Delphi starten und ProzessID aufzeichen
Jo danke für die Links...
Bei weiteren recherchen hab ich ein bisl code gefunden, den ich ein bisl angepasst habe... Wenn´s jemanden interessiert, hier ist der Code xD
Delphi-Quellcode:
vllt. kann ja jemand was damit anfangen...
function StartExe(FileName: string; Visibility: Integer): Integer;
var { by Pat Ritchey } zAppName: array[0..512] of Char; zCurDir: array[0..255] of Char; WorkDir: string; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin StrPCopy(zAppName, FileName); GetDir(0, WorkDir); StrPCopy(zCurDir, WorkDir); FillChar(StartupInfo, SizeOf(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; CreateProcess(nil, zAppName, // pointer to command line string nil, // pointer to process security attributes nil, // pointer to thread security attributes False, // handle inheritance flag CREATE_NEW_CONSOLE or // creation flags NORMAL_PRIORITY_CLASS, nil, //pointer to new environment block nil, // pointer to current directory name StartupInfo, // pointer to STARTUPINFO ProcessInfo); // pointer to PROCESS_INF result := ProcessInfo.dwProcessId; end; procedure TForm1.Button1Click(Sender: TObject); var prozessid: Integer; begin prozessid := StartExe('notepad', 1); edit1.Text := inttostr(prozessid); end; MFG Björn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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