AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein mehrere Programme gleichzeitig schließen
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Programme gleichzeitig schließen

Ein Thema von michaela · begonnen am 4. Feb 2005 · letzter Beitrag vom 4. Feb 2005
Antwort Antwort
michaela

Registriert seit: 3. Apr 2004
14 Beiträge
 
#1

mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 16:59
Hallo,

ich möchte 3 Delphiprogramme (arbeiten zusammen) gleichzeitig, z.B. durch Anklicken eines Buttons, schließen. Die zugehörigen Exedateien befinden sich in einem Oberordner in 3 verschiedenen Unterordnern.

Was jemand, wie das geht?

Michaela
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#2

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 17:04
Die Exe-Dateien bringen dir gar nichts. Du musst das Handle der Programme herausfinden und dann eine Message ans zu schließende Programm schicken. Such mal im Forum danach
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 17:21
Zitat von malo:
Die Exe-Dateien bringen dir gar nichts.
Warum nicht? Er kann doch auch über eien Exe-Namen ein Programm schliessen.
Thomas
  Mit Zitat antworten Zitat
michaela

Registriert seit: 3. Apr 2004
14 Beiträge
 
#4

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 18:10
Ich habe leider noch sehr wenig Erfahrung.

Wie müsste denn so ein Befehl aussehen, mit dem ein anderes Programm geschlossen werden muss? (das zu schließende Programm wird normalerweise nur mit close geschlossen)

Michaela
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#5

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 18:13
Zitat von toms:
Zitat von malo:
Die Exe-Dateien bringen dir gar nichts.
Warum nicht? Er kann doch auch über eien Exe-Namen ein Programm schliessen.
Seit wann? Also soweit ich weiß, braucht man dafür doch "nur" das Handle des zu schließenden Programms

Ob man über den Exe-Namen ans Handle kommt, weiß ich nicht. Aber einen anderen Weg kann ich mir nicht vorstellen
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 18:20
{Für Windows 9x/ME/2000/XP }

Delphi-Quellcode:
uses
  Tlhelp32;

function KillTask(const ExeFileName: TFileName): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  KillTask('notepad.exe');
end;
Thomas
  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
 
#7

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 18:21
Delphi-Quellcode:
var Fenster : Hwnd;
Fenster := FindWindow(nil,'FensterCaption');
SendMessage(Fenster,WM_CLOSE,0,0);
so etwa, nur in deinem Fall für mehrere Fenster

[edit]*hochschau* : ohh.. toms Lösung ist wohl etwas professioneller und du kannst einfach den Exenamen eingeben. [/edit]
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Remote1
Remote1

Registriert seit: 22. Okt 2003
Ort: Dippoldiswalde
252 Beiträge
 
Delphi 6 Personal
 
#8

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 18:28
probiers mal damit
dafür suchst du aber auch die handles, halt nur über den exakten fenstertitel
Delphi-Quellcode:
var handle: HWnd;
begin
  handle := FindWindow(NIL,'Form1');//statt Form1 halt deinen fenstertitel
  if handle<>0 then PostMessage(W, wm_close, 1, 1);
end;
oder du machsts über "prozesse auflisten und beenden"
solltest da genug im forum finden (da kann man unter anderem auch dan pfad der exe auslesen den du ja dann mit deinem vergleichen kannst - meiner meinung nach aber viel zu umständlich, einfacher und schneller ist die obere variante)
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#9

Re: mehrere Programme gleichzeitig schließen

  Alt 4. Feb 2005, 18:42
Zitat von toms:
TerminateProcess[/delphi]
Man muss ja nicht gleich den Prozess so brutal abschießen. Sinnvoller wäre, wenn man die ProcessId hat, mit EnumWindows & GetWindowThreadProcessId das Fensterhandle zu suchen. Eine SC_CLOSE Nachricht an das Fenster schicken. Gibt IsWindow immer noch True zurück, dann kann man auch eine WM_QUIT Thread Nachricht schicken. Und danach als letzte Option würde ich TerminateProcess nehmen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  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 15:48 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