![]() |
Programm beenden ohne sichbares Fenster
Hallo, ich schon wieder.
Ich wollte nur nochmal nachfragen wie ich GENAU ich das Programm (Prog.exe) schließen kann obwohl ich kein Fenster sehe... Sagen wir das Programm ist unter "C:\prog.exe" und läuft gerade. Habe zwar schon Infos bekommen... aber ganz klar ist mir das noch nicht. FindWindow( ??? , ??? ); SendMessage( ??? ); tut mir leid, dass ich solche Fragen stelle, aber in meiner Online Hilfe finde ich nichts brauchbares. Hab ausserdem das erste mal damit was zu tun... Hoffe Ihr verzeiht mir... [Edit=FuckRacism] Thema umbenannt, beim nächsten Mal bitte den Namen des Themas auf die Frage hin bezogen benennen, damit jeder vom Namenen her schon sieht ob das was für ihn ist![/edit] |
Hallo Du schon wieder...
FindVCLWindow gibt das fensterorientierte Steuerelement an der angegebenen Position zurück. Unit Controls Kategorie Maussteuerung function FindVCLWindow(const Pos: TPoint): TWinControl; Beschreibung Mit FindVCLWindow können Sie das fensterorientierte Steuerelement, das sich an einer bestimmten Position befindet, ermitteln. Beispielsweise läßt sich mit FindVCLWindow das fensterorientierte Steuerelement ermitteln, auf dem sich der Mauszeiger befindet, wenn ein anderes Steuerelement aktuell alle Mausbotschaften abfängt. Der Parameter Pos bezeichnet die Position, innerhalb derer sich das zurückgegebene Steuerelement befinden muß. Wenn sich an dieser Stelle kein fensterorientiertes Steuerelement befindet, liefert FindVCLWindow den Wert nil zurück. SendAppMessage sendet eine Windows-Botschaft an die Anwendung. Unit Controls Kategorie Windows-Steuerelemente function SendAppMessage(Msg: Cardinal; WParam, LParam: Longint): Longint; Beschreibung Mit SendAppMessage können Sie eine Windows-Botschaft an das globale Anwendungsobjekt senden. Msg enthält den Windows-Botschaftscode. WParam enthät die W-Parameter der Botschaft. Deren Interpretation ist von dem Wert in Msg abhängig. LParam enthät die L-Parameter der Botschaft. Deren Interpretation ist von dem Wert in Msg abhängig. SendAppMessage gibt das von der Fensterprozedur der Anwendung bereitgestellte Ergebnis zurück. Wenn die Anwendung die Botschaft nicht behandelt, liefert SendAppMessage 0. Grüsse, Daniel :hi: |
Moin Andi,
FindWindow und SendMessage sind Windows API Funktionen. SendMessage ist zwar in Form der Methode Perform auch bei vielen VCL Controls zu finden, funktioniert aber erfahrungsgemäss nicht immer richtig. In der Delphi Hilfe findest Du die, wenn Du den Namen in der IDE eingibst, und dann mal F1 drückst. Es wird dann die Hilfe aus dem bei Delphi mitgelieferten, antiquarischen, SDK von Microsoft angezeigt. Such' doch mal hier im Forum nach PSDK. Das sollte einige Fundstellen erbringen. FindWindow erwartet als ersten Parameter den Namen der Klasse des zu suchenden Fensters, im zweiten die Caption, wobei auch je einer dieser Parameter durch nil ersetzt werden kann. Die Caption dürfte klar sein. Die Klasse wäre in Delphi standardmässig TForm1. Hängt davon ab, ob Du dem Formular einen neuen Namen gegeben hast, dann ändert sich dieser Wert. Rückgabewert ist das Handle des Fensters, oder 0 falls es nicht gefunden werden konnte Wichtig: Das Fenster muss nicht zu sehen sein, sondern nur existieren. SendMessage kennt vier Parameter, von denen allerdings nur zwei immer erforderlich sind. Der erste ist das Handle des Fensters an das die Meldung geschickt werden soll, der zweite ist die Meldung. Der dritte und vierte Parameter hängen von der Meldung ab, die geschickt werden soll. Im Falle von WM_SYSCOMMAND sähe das so aus: SendMessage(dwHandle,WM_SYSCOMMAND,SC_CLOSE,0); Hier wird der vierte Parameter nicht benötigt. Bei WM_CLOSE dann so: SendMessage(dwHandle,WM_CLOSE,0,0); Hier werden die letzten beiden Parameter nicht gebraucht. Näheres zu SendMessage und FindWindow kannst Du bestimmt hier im Forum finden, oder im PSDK (s.o.), ohne das Du über kurz oder lang nicht wirst auskommen können ;-), oder aber bei Microsoft msdn.microsoft.com. |
Moin Daniel B,
heute haben wir's aber :mrgreen: FindVCLWindow dürfte dem WindowFromPoint der Windows API entsprechen (so einigermassen), und erfordert die Mausposition. Ich fürchte mal, dass es kein Fenster ausserhalb der eigenen Applikation finden kann. SendAppMessage gibt's erst ab D6 (kannst Du ja nicht wissen). Ich hoffe es funktioniert zuverlässiger als Perform. Ausserdem funktioniert das nur innerhalb der eigenen Application. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 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