AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozess killen

Ein Thema von Andreas L. · begonnen am 9. Mär 2008 · letzter Beitrag vom 10. Mär 2008
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

Prozess killen

  Alt 9. Mär 2008, 20:13
Abend,

mit folgenden Code möchte ich einen Prozess beenden:

Delphi-Quellcode:
    

function KillProcess(const ExeName: String): Boolean;
var
  Process: TProcessEntry32;
  h: THandle;
begin
  Result := False;
  Process.dwSize := SizeOf(Process);
  h := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
   if Process32First(h, Process) then
    repeat
     if AnsiLowerCase(Process.szExeFile) = AnsiLowerCase(ExeName) then Result := TerminateProcess(OpenProcess(Process_Terminate, False, Process.th32ProcessID), 0);
    until (not Process32Next(h, Process)) or Result;
  finally
   CloseHandle(h);
  end;
end;

//Aufruf:
KillProcess(IncludeTrailingPathDelimiter(GetShellFolder(CSIDL_PROGRAM_FILES)) + 'Windows Sidebar\sidebar.exe');
Es passiert aber nichts, die Anwendung wird nicht beendet. Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Prozess killen

  Alt 9. Mär 2008, 20:15
Hi,

Ich glaube du musst den Exenamen ohne den Pfad angeben:

KillProcess('sidebar.exe'); Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Prozess killen

  Alt 9. Mär 2008, 20:17
Woher stammt dieser Code? Ich bin immer noch der Meinung, dass man Handles nach Benutzung wieder schließen sollte.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Prozess killen

  Alt 9. Mär 2008, 20:17
Du musst nur den ExeNamen übergeben und nicht den Pfad zur Exe.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Prozess killen

  Alt 9. Mär 2008, 20:18
Zitat von Apollonius:
Woher stammt dieser Code? Ich bin immer noch der Meinung, dass man Handles nach Benutzung wieder schließen sollte.
Das Handle wird im Finally-Block per CloseHandle wieder geschlossen.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Prozess killen

  Alt 9. Mär 2008, 20:18
Ich meinte das Prozess-Handle.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Prozess killen

  Alt 10. Mär 2008, 08:18
Zitat von Andreas L.:
Es passiert aber nichts, die Anwendung wird nicht beendet. Was mache ich falsch?
Du musst deine Hausaufgaben machen. Die Funktion gibt doch schon einen Wahrheitswert zurück, der sagt, ob es geklappt hat oder nicht. Hat es nicht geklappt, gibt die Funktion False zurück, dann wäre es bestimmt keine schlechte Idee mit MSDN-Library durchsuchenGetLastError zu gucken, warum die Funktion fehlgeschlagen ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz