Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie anderes Programm beenden? (https://www.delphipraxis.net/83027-wie-anderes-programm-beenden.html)

Mazel 25. Dez 2006 09:35


Wie anderes Programm beenden?
 
Hallo,

ich habe ein Problem beim Beenden eines Programmes von welchen ich dem Pfad habe. Es geht dabei um WinTV-Nexus, weis nicht ob das jemand kennt. Mit folgenden Code beende ich das Programm, Problem ist aber, das der Ton noch zu hören ist obwohl das Programm als Prozess nicht weiterläuft:
Delphi-Quellcode:
function KillProcess(const ExeName: String): Boolean;
var
  Prozess       : TProcessEntry32;
  h             : THandle;

begin
  Result := False;
  Prozess.dwSize := SizeOf(Prozess);
  h := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  try
   If Process32First(h, Prozess) then
    Repeat
     If AnsiLowerCase(Prozess.szExeFile) = AnsiLowerCase(ExeName) then Result := TerminateProcess(OpenProcess(Process_Terminate, False, Prozess.th32ProcessID), 0);
    Until (Not Process32Next(h, Prozess)) or Result;
  finally
   CloseHandle(h);
  end;
end;
Kann mir da jemand helfen?

Gruß
Mazel

Balu der Bär 25. Dez 2006 11:13

Re: Wie anderes Programm beenden?
 
Das Problem kenne ich von Spielen, welche nach dem Abschießen durch den Taskmanager noch immer ihre Musik abspielen. Nach ein paar Sekunden sollte das aber aufhören, oder läuft das bei dir ewig weiter? Ich kenne das besagte Programm nicht, bist du sicher das der Task den du beendest der einzige von diesem Programm ist? Vielleicht läuft da noch irgendwas von dem mit...

Mazel 25. Dez 2006 11:53

Re: Wie anderes Programm beenden?
 
Moin,

also im Taskmanager ist es verschwunden, und der Ton läuft ewig weiter. Eventuell habe ich was übersehen. Das Programm ist nicht auf meinem Rechner daher kann ich im Moment nicht nachsehen.

Gruß
Mazel

DIET3RIX 25. Dez 2006 11:59

Re: Wie anderes Programm beenden?
 
Ich kenne das Problem, von 'ner Pinacle Anwendung. Jedes ma, wenn die Anwendung abgestürzt ist, lief der Ton weiter. D.h. das du die Anwendung evtl. nicht Ordnungsgemäß beendest.

Mazel 25. Dez 2006 12:17

Re: Wie anderes Programm beenden?
 
Ich beende das Programm mit dem oben genannten Code. Den habe ich irgendwo aufgelesen :wink:

Gruß
Mazel

Luckie 25. Dez 2006 12:26

Re: Wie anderes Programm beenden?
 
Versuch lieber an das Fenter ein WM_CLOSE zu schicken.

Mazel 25. Dez 2006 12:29

Re: Wie anderes Programm beenden?
 
Hallo,

ja das werde ich versuchen. Ich habe aber an einigen Stellen gelesen, dass das nicht unbedingt klappen muss, was ich aber nicht verstehe. Weist du warum? Werde es auf jeden Fall heute noch versuchen.

Gruß
Mazel

Darkmorph 29. Jan 2007 10:55

Re: Wie anderes Programm beenden?
 
Hi Mazel,

die Terminate-Funktion ist denkbar schlecht, da dll's die von dem Programm geladen wurden, die DLL z.B. die für den Ton zuständig ist, nicht über die Terminierung informiert werden. Sende stattdessen SendMessage(hProcess, WM_CLOSE,0,0)

mfg benjamin

Luckie 29. Jan 2007 10:59

Re: Wie anderes Programm beenden?
 
An das Fenster, an das Fenster. WM_ steht nicht um sonst für WindowsMessage und nicht für ProcessMessage. Desweiteren können Prozesse gar keine Nachrichten empfangen. ;)

Olli 31. Jan 2007 23:35

Re: Wie anderes Programm beenden?
 
Zitat:

Zitat von Luckie
An das Fenster, an das Fenster. WM_ steht nicht um sonst für WindowsMessage und nicht für ProcessMessage. Desweiteren können Prozesse gar keine Nachrichten empfangen. ;)

... aber Threads (und zwar auch ohne Fenster :zwinker:).


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf