Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Beliebiges Programm über Delphi schließen (https://www.delphipraxis.net/51794-beliebiges-programm-ueber-delphi-schliessen.html)

Temudschin 18. Aug 2005 22:04


Beliebiges Programm über Delphi schließen
 
Ziel des bescheidenen Delphi-Projektes ist es, dass jenes einfach eine anderes laufendes Programm ohne wenn und aber schließt. Zwar könnte einfach gesagt werden, fahre den Computer herunter und damit alle Programme die darauf laufen, aber das ist nicht so schön.
Auch nach durchsuchen dieses umfangreichen Forums (welches mir auch schon bei der gegenteiligen Methodik gut geholfen hat) wurde ich leider nicht fündig. Liegt das daran, das es keine Möglichkeit gibt, da es sich hierbei vielleicht um eine Zugriffsverletzung handeln könnte, oder das einfach nie die Notwendigkeit bestand?

Hoffe auf Zweiteres
danke im Voraus.

Joachim Rohde 18. Aug 2005 22:07

Re: Beliebiges Programm über Delphi schließen
 
Hab's nur (ganz) kurz überflogen, aber das müsste das Richtige für dein Vorhaben sein: http://msdn.microsoft.com/library/de...tml/dt0109.asp

ManuMF 18. Aug 2005 22:19

Re: Beliebiges Programm über Delphi schließen
 
Wenn der Name des Fensters bekannt ist:
Delphi-Quellcode:
var Window : hWnd;

Window := FindWindow(nil, 'Name des Fensters');
if Window <> 0 then PostMessage(Window, wm_close, 1, 1);
Funktioniert aber nicht, wenn das Programm z.B. eine Abfrage beim Beenden anzeigt

Wenn der Dateiname des Programms bekannt ist:
Delphi-Quellcode:
uses TlHelp32;

// Funktion
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
if not (KillTask('NameDesProgramms.exe') then
  {z.B.} showmessage('Programm konnte nicht beendet werden.');
Die harte Methode ;-) , von dsdt.info

Temudschin 19. Aug 2005 14:51

Re: Beliebiges Programm über Delphi schließen
 
Arigato
*verbeug*

Funktioniert alles super.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05: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