![]() |
Programm durch Delphi Programm beenden?
Eine Frage, ich suche nen Script mit dem ich andere offene ( meißt im hintergrund laufende) Programme mit einem kleinen Delphi programm beenden kann.
Ich bin leider Anfänger und bring das nicht zusammen. Danke |
Re: Programm durch Delphi Programm beenden?
|
Re: Programm durch Delphi Programm beenden?
Da Hab ich leider nichts gefunden ;(
|
Re: Programm durch Delphi Programm beenden?
![]() ![]() folgender Code:
Delphi-Quellcode:
du musst nur die Unit TLHelp32 in die Uses-Liste einbinden.
function GetProcID(sProcName: String): Integer;
var hProcSnap: THandle; pe32: TProcessEntry32; begin result := -1; hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); if hProcSnap = INVALID_HANDLE_VALUE then exit; pe32.dwSize := SizeOf(ProcessEntry32); { wenn es geklappt hat } if Process32First(hProcSnap, pe32) = true then { und los geht's: Prozess suchen} while Process32Next(hProcSnap, pe32) = true do begin if pos(sProcName, pe32.szExeFile) <> 0then result := pe32.th32ProcessID; end; end; procedure KillIt(name:string); var hProcess : Cardinal; dw : DWORD; dwprocid : cardinal; begin dwprocide:=getprocid(name); { open the process and store the process-handle } hProcess := OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE, False, dwProcID); { kill it } TerminateProcess(hProcess, 0); { TerminateProcess returns immediately, so wie have to verify the result via WaitfForSingleObject } dw := WaitForSingleObject(hProcess, 5000); case dw of { everythings's all right, we killed the process } WAIT_OBJECT_0: Messagebox(Application.Handle, 'Prozess wurde beendet.', 'Prozess beenden', MB_ICONINFORMATION); { process could not be terminated after 5 seconds } WAIT_TIMEOUT: begin Messagebox(Application.Handle, 'Prozess konnte nicht innerhalb von 5 Sekunden beendet werden.', 'Prozess beenden', MB_ICONSTOP); exit; end; { error in calling WaitForSingleObject } WAIT_FAILED: begin RaiseLastOSError; exit; end; end; end; |
Re: Programm durch Delphi Programm beenden?
Laufende Anwendung beenden
CreateToolHelp32Snapshot, TerminateProcess -------------------------------------------------------------------------------- Die Funktion beendet den Prozess, der mit übergebenen Exenamen übereinstimmt. Sollten mehrere Prozesse des selben Exenamens laufen, so wird der zuerst Gefundene geschlossen. Wenn der Prozess erfolgreich beendet wurde, wird true zurückgegeben.
Delphi-Quellcode:
Bei diesem Code wird der Prozess ohne Rückfrage beendet. Dadurch kann es ggf. zu Datenverlusten kommen.
uses TLHelp32;
function KillTask(const AExeName: string): boolean; var p: TProcessEntry32; h: THandle; begin Result := false; p.dwSize := SizeOf(p); h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0); try if Process32First(h, p) then repeat if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then Result := TerminateProcess(OpenProcess(Process_Terminate, false, p.th32ProcessID), 0); until (not Process32Next(h, p)) or Result; finally CloseHandle(h); end; end; //Aufruf procedure TForm1.Button2Click(Sender: TObject); begin if not KillTask('Project2.exe') then Showmessage('Prozess konnte nicht beendet werden.'); end; [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Programm durch Delphi Programm beenden?
Danke hat einwandfrei Funktioniert ;) :thumb:
|
Re: Programm durch Delphi Programm beenden?
Hallo,
Ich habe einige Functionen hier im Forum getestet aber unter Win NT Probleme mit dem Abschiessen eines Programmes über deren *.exe Namen. Kann mir jemand nen Tipp geben? Danke |
Re: Programm durch Delphi Programm beenden?
Kannst du uns die Art des Problems geben?
|
Re: Programm durch Delphi Programm beenden?
Hi,
also das Problem ist das ich unter Win NT 4.0 eine Exe nicht abschiessen oder beenden kann! Bräuchte die Funktion dringen um was upzudaten. Danke. |
Re: Programm durch Delphi Programm beenden?
Villeicht mit Hilfe bon pskill aus den pstools von Sysinternal.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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