![]() |
Prozess Beenden
Den Code zum Herausfinden der Aktuellen Prozesse besitze ich. Nun, wie stelle ich das an, das einfach zum beispiel der
"Winhelp32.exe" Prozess beendet wird? Weil ich will nicht, das der user zueerst in der Listbox die exe auswählen muss, um das zu beenden. Ich hoffe ihr Wisst, was ich eigentlich will. Mit Delphi code einen Prozess beenden, eben zum beispiel "Winhelp32.exe". Für alle dies ned wissen, Winhelp32.exe gehört zu einem Virus. Ja ich will ein Antiprogramm dafür schreiben^^ Kann mir jemand helfen? :oops: zum auslesen der Prozesse benutze ich das: ![]() mfg. MiniKeks :) |
Re: Prozess Beenden
zu diesem thema hast du sicherlich nichts hier im forum gefunden, oder?
![]() ach herr je, und sogar hier gibts was: ![]() |
Re: Prozess Beenden
das ist doch bei diesem Code dabei, oder?
|
Re: Prozess Beenden
Zitat:
Zitat:
Ich würde aber diesen Code vorziehen: ![]() |
Re: Prozess Beenden
Ich verstehe den Code nicht! Auflisten kann ich. Doppelklick beenden auch.
Aber da steht: Edit1.text. Wenn ich da reinschreibe 'Opera.exe' Dann steht: Ungültiger Gleitkomawert. Ich will ned wissen wie mans auflistet, sonern so: BEENDEN(opera.exe); Sowas, wisst ihr was ich meine? :lol: |
Re: Prozess Beenden
Ist es nicht sinnvoller, dem eigentlichen Problem, nämlich dein infiziertes Windowssytem, auf die Spur zu kommen, statt auf diesen Weg einfach Prozesse zu beenden. Starte mal msconfig, da findest du eine Liste von allen Programmen die beim Windowsstart gestartet werden. Vielleicht kommt dir da ja was verdächtig vor.
|
Re: Prozess Beenden
Es geht nicht um meinen PC :lol:
Bitte bitte kann mir jemand einfach helfen? *verzeifel* |
Re: Prozess Beenden
OK, probieren wir es noch einmal:
Zitat:
|
Re: Prozess Beenden
Zitat:
Zitat:
|
Re: Prozess Beenden
Zitat:
|
Re: Prozess Beenden
Zitat:
Ansonsten favorisiere ich natürlich eindeutig die Kapselung in Routinen oder sogar Klassen. Keine Frage. |
Re: Prozess Beenden
Es klang so, als wenn du meintest in den einzelnen Routinen würde ich auf TForm usw. zugreifen.
Zitat:
|
Re: Prozess Beenden
Zitat:
Es ist für dich und mich eindeutig, aber wir hatten das schon mehrfach, nicht alle wissen so gut bescheid :-/ |
Re: Prozess Beenden
Ach so da. Jupp, wäre bestimmt nicht schlecht. Aber nicht mehr heute, mir platzt gleich der Schädel - hat hier jemand mal eine Kopfschmerztablette?
|
Re: Prozess Beenden
Zitat:
|
Re: Prozess Beenden
Da ich mich sowieso schon die ganze Zeit mit dir hier beim Posten unterhalte:
Zitat:
Zitat:
Aber wir werden gerade ziemlich offtopic. Eigentlich müsste ich schon mein eigenes Posting melden. :wall: |
Re: Prozess Beenden
Hiermit ermahne ich Luckie, nicht weiter offtopic zu werden und zum Thema zurückzufinden!
Ein Hinweis von Olli noch an Luckie: Zitat:
|
Re: Prozess Beenden
@Luckie AND Olli, darf ich Eure Zweisamkeit unterberchen ? :wink:
@MiniKeks In Bezug auf ![]() Im Beispiel sollte man noch auf die Gross- und Kleinschreibung eingehen.
Delphi-Quellcode:
function TerminateTheProcess(const ExeFilename: String): Boolean;
var ... begin aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); aProcessEntry32.dwSize := SizeOf(aProcessEntry32); bContinue := Process32First(aSnapshotHandle, aProcessEntry32); while Integer(bContinue) <> 0 do // Suche solang bContinue true begin if ExtractFileName(aProcessEntry32.szExeFile) = ExeFilename then begin if MessageDlg('Do you want to Terminate...' ... then begin PrID := aProcessEntry32.th32ProcessID; Ph := OpenProcess(1, BOOL(0), PrID); Ret := TerminateProcess(Ph, 0); if Integer(Ret) = 0 then begin MessageDlg('Cannot terminate...', mtInformation, [mbOK], 0); Result := False; end else begin bContinue := False; Result := True; { könnte man auch so machen ist aber nicht "sauber" CloseHandle(aSnapshotHandle); Result := True; exit; } end; end; end; bContinue := Process32Next(aSnapshotHandle, aProcessEntry32); // weitersuchen end; CloseHandle(aSnapshotHandle); end; |
Re: Prozess Beenden
Und genau das ist das Problem:
Delphi-Quellcode:
weswegen ich meinen Code vorziehen würde. TerminateProcess arbeitet asynchron:
Ret := TerminateProcess(Ph, 0);
Zitat:
Delphi-Quellcode:
{...}
dw := Integer(TerminateProcess(hProcess, 1)); if dw <> 0 then begin // TerminateProcess returns immediately, so wie have to verify the result via // WaitForSingleObject dw := WaitForSingleObject(hProcess, Wait); if dw = WAIT_FAILED then dw := GetLastError; end {...} |
Re: Prozess Beenden
Zitat:
Zitat:
Woraus schöpfst du eigentlich deine Zuversicht, der erste Prozeß mit diesem exakten Namen der EXE sei das Ziel? Hier könnte der Pfad auch relevant sein. Außerdem gibt es ein typisches Problem der Native APIs (also schon unterhalb der Toolhelp-API) in Sachen Dateiname. Bei mir wird aus C:\Programme\Apache Group\Apache2\bin\ApacheMonitor.exe sowohl im TaskManager als auch in anderen ähnlichen Programmen ein ApacheMonitor.e. Das gilt natürlich für obige Beispiele gleichermaßen - fiel mir nur gerade ein und wird üblicherweise komplett vernachlässigt. |
Re: Prozess Beenden
Zitat:
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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