![]() |
mehrere Programme gleichzeitig schließen
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 |
Re: mehrere Programme gleichzeitig schließen
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 ;)
|
Re: mehrere Programme gleichzeitig schließen
Zitat:
|
Re: mehrere Programme gleichzeitig schließen
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 |
Re: mehrere Programme gleichzeitig schließen
Zitat:
Ob man über den Exe-Namen ans Handle kommt, weiß ich nicht. Aber einen anderen Weg kann ich mir nicht vorstellen ;) |
Re: mehrere Programme gleichzeitig schließen
{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; |
Re: mehrere Programme gleichzeitig schließen
Delphi-Quellcode:
so etwa, nur in deinem Fall für mehrere Fenster
var Fenster : Hwnd;
Fenster := FindWindow(nil,'FensterCaption'); SendMessage(Fenster,WM_CLOSE,0,0); [edit]*hochschau* : ohh.. toms Lösung ist wohl etwas professioneller und du kannst einfach den Exenamen eingeben. :? [/edit] |
Re: mehrere Programme gleichzeitig schließen
probiers mal damit
dafür suchst du aber auch die handles, halt nur über den exakten fenstertitel
Delphi-Quellcode:
oder du machsts über "prozesse auflisten und beenden"
var handle: HWnd;
begin handle := FindWindow(NIL,'Form1');//statt Form1 halt deinen fenstertitel if handle<>0 then PostMessage(W, wm_close, 1, 1); end; 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) |
Re: mehrere Programme gleichzeitig schließen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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