Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi handle, handle...., Programm beenden, ich check es nicht (https://www.delphipraxis.net/11431-handle-handle-programm-beenden-ich-check-es-nicht.html)

Walter vdV 6. Nov 2003 14:25


handle, handle...., Programm beenden, ich check es nicht
 
Auch auf die Gefahr das ich nerve, aber ein fremdes Programm zu beenden ohne 'terminate' ich begreife es einfach nicht. Also wie man eine PID bekommt ist hier zur Genüge beschrieben und ein Programm beenden mit SendMessage(hwnd,SC_CLOSE,..) auch. Wie komme ich aber an das Fensterhandle (hwnd). Mit FindWindow benötige ich den exakten Text des Fensters. Nur den habe ich nicht, er ändert sich auch z.B. bei Notepad. Man hat die PID und den Filenamen der exe, und mehr nicht. Der Programmcode von Chewie in der Code-Library ist meiner Meinung nach der richtige Ansatz aber ich verstehe einfach nicht, wie ich daraus das Fensterhandle bekomme, weil er ja auch wieder einen Vergleich mit dem Windowstext macht.
Alles was ich bis jetzt zusammentragen und probieren konnte löst mein Problem nicht.
Vielleicht ist noch einmal jemand so freundlich und gibt einem Dummi eine verständliche Anleitung.
Ich muss noch dazu sagen, dass die Programme die ich beenden möchte, sich in der TNA einnisten.
Gruss Walter

SirThornberry 6. Nov 2003 14:46

Re: handle, handle...., Programm beenden, ich check es nicht
 
bei findwindow musst du nicht unbedingt den fenstertitel angeben du kannst auch den klassennamen angeben

Walter vdV 6. Nov 2003 15:48

Re: handle, handle...., Programm beenden, ich check es nicht
 
Mit dem Classname ist es ja das gleiche Problem, man hat ihn nicht.

Luckie 6. Nov 2003 18:08

Re: handle, handle...., Programm beenden, ich check es nicht
 
Man kann ihn aber ermitteln. Mit WinSight oder ähnlichen Programmen (WindowInfo von meiner Seite zum Beispiel). Des weiteren könntest du dir mit EnumWindows alle Fenster auflisten lassen und dir dann an Hand der Fenster Caption dir deins rauspicken.

BTW stimmt es schon, dass sich beim Notepad je nach geladener Datei die Caption ändert, aber meinses Wissens taucht da immer die Zeichenfolge "- Editor" auf. Also kein Problem das Notepad zu finden.

Walter vdV 6. Nov 2003 20:53

Re: handle, handle...., Programm beenden, ich check es nicht
 
Also erst mal danke. Ist alles richtig. Vielleicht schildere ich erst mal was ich will. Wenn ich ins Internet will wird zuerst der Firewall, dann der Dialerschutz, das Antivirusprogramm, die Bluetoothverbindungen, dann die DFÜ-Verbindung und dann der Browser gestartet also 6x Click. Das ganze möchte jetzt mit meinem Programm in einem Rutsch machen, also einmal auf den Button clicken und der Rest läuft automatisch. Das ganze soll natürlich dann auch umgekehrt laufen. Das klappt auch ganz prima wenn ich beim beenden TerminateProcess verwende (obwohl bei der Bluetoothverbindung habe ich beim Beenden noch Probleme aber das tut hier nichts zur Sache). Ich möchte aber zum Beenden nicht TerminateProcess verwenden, weil das wie ich in einer Diskussion schon gelesen habe(und aus Erfahrung weiss) brutal ist und zu Problemen führt (mein Browser meldet immer, er wurde nicht korrekt beendet). Ich kenne natürlich meine Prozesse und Fenster die ich offen habe (Taskmanager, ProcessExplorer etc.). Ich möchte aber ein Konfigurationstool schreiben in dem ein anderer Nutzer die Programme frei auswählen kann die er mit starten will(z.B. C:\Programme\Antivirus.exe oder C:\Internet Explorer\Internetexplorer.exe). Ich kann ja dem Nutzer nicht zumuten mit irgendeinem Tool herauszufinden wie die Fenster heissen und diese Namen noch händisch in der Registery einzutragen. Also was habe ich nach der freien Konfiguration, den exe-Namen und darüber die Process-Id und mit diesen Infos will ich auch alles wieder beenden.
Ausserdem nisten sich diese Programme alle in der TBNA ein und was sich da heutzutage alles erlaubt sich niederzulassen mit mehr oder weniger grossen Hints, da muss man schon ein äusserste feingefühl mit der Maus besitzen um die richtigen Icons rauszufinden.
Das Programm hat natürlich noch andere 'Gags', die sind für dieses Problem aber nicht relevant.
Gruss Walter
PS. Bitte keine Diskussionen darüber, warum ich überhaupt einen Firewall benutze.

Flogo 8. Dez 2003 19:05

Re: handle, handle...., Programm beenden, ich check es nicht
 
Hi Walter hast du das Problem mittlerweile gelöst? Ich war grad dabei fast das gleiche Tool zu schreiben und bin am gleichen Prob hängen geblieben. Was tue ich also? Ich such natürlich in der :dp: und finde deine Frage :hi:
Wäre cool wenn du oder jemand anders ders inzwischen gelöst hat sich meldet und mal ein Stück Code spendiert 8)

Walter vdV 8. Dez 2003 19:45

Re: handle, handle...., Programm beenden, ich check es nicht
 
Hallo Flogo,
tut mir leid, aber leider habe ich keine Lösung. Ich habe mit einem Spezialisten (meiner Meinung nach) direkt kommuniziert und verschiede Dinge ausprobiert aber ich bin zu keinem Ergebnis gekommen. Mich wunderts eigentlich nicht. Meiner Meinung nach bekommt man hier im Forum excellente Antworten auf seine Fragen, aber da keiner geantwortet hat, vermute ich mal, dass das gar nicht so einfach ist. Ausserdem, wenn ich mir es recht überlege, wäre es auch wieder eine Sicherheitslücke in WIN. Dann könnte Dir ja jeder Hobbyhacker ein Ei legen und z.B. Deinen Virenschutz beim Surfen ausschalten usw. Ich denke mal, dass die 'seriösen Hacker' hier im Forum Ihr evtl. Wissen zurückhalten und das eigentlich zu Recht.
Ich hab's erst mal aufgegeben.
Gruss Walter

Flogo 8. Dez 2003 19:57

Re: handle, handle...., Programm beenden, ich check es nicht
 
:cry: Na gut dann nicht :cry:
Werd ich mein Project eben auch wieder auf Eis legen bzw. nur Prog starten beendet wird dann halt von hand
thanx anyway
flogo

Stanlay Hanks 8. Dez 2003 20:06

Re: handle, handle...., Programm beenden, ich check es nicht
 
Hallo. Nur nicht den Mut verlieren! :wink:
Lest euch vielleicht mal den Beitrag hier durch: Snapshot
Vielleicht hilft euch das weiter. Wenn ich das richtig verstanden habe, kann man die ProzessID (oder so) von einer .exe ermitteln. Dann sollte es doch kein Problem mehr sein, weiterzu arbeiten, wenn man das schon mal hat. Da der Benutzer ja die Progs festlegt, die er starten will, werden die ja auch irgendwo gespeichert. Dann muss man nur die Dateinamen auslesen und sich die ID von dem Prog holen. Dann sollte mans auch schon abschießen können :twisted:

Man liest sich, Stanlay :hi:

Flogo 8. Dez 2003 20:19

Re: handle, handle...., Programm beenden, ich check es nicht
 
Wie genau meinst du das mit "abschießen".
Mit Terminate oder wie? Schadet das nicht irgendwie? Walter hat ja schon beschrieben was bei terminate passiert? Wenn nicht mit terminate oder WM_CLOSE (geht wegen Firewall nicht) wie dann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 Uhr.
Seite 1 von 2  1 2      

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