![]() |
Handles?!
Hallo, ich bins mal wieder mit einer Frage,
die mich nun schon eine ganze Weile lang beschäftigt. Und zwar: Des Öfteren sind hier Handles und Sachen wie Send- bzw. PostMessage aufgetaucht. Aber was sind diese drei Dinge überhaupt. In der Hilfe hab ich nur was zu Send- bzw PostMessage gefunden, was ich aber nur vom Prinzip her verstehe, nicht von der Syntax und zu Handle habe ich gar nichts Verständliches gefunden. Allerdings wurde es im Forum auch mit dem Fokusieren eines anderen Fenster in Verbindung gebracht. Und das ist genau der Punkt: Wenn es geht, wie? Wenn nicht, warum? Und warum frage ich heute wieder mal so viel? (letzte Frage ruhig ignorieren... *g*) Ich brauche nämlich für mein neues Programm (ein Trainer für ein kleines Minigame) der Benutzerfreundlichkeit halber einen Befehl, der ein anderes Fenster "anvisiert". Danach sollen allerdings noch virtuelle Tastendrücke simuliert werden, sodass die Befehle des Trainers noch "ankommen", wobei ich letzteres allein schon geschafft habe, fehlt nur noch der Teil mit dem Fensterwechsel. Und da kommt ihr ins Spiel, indem ihr mir (evtl.) helft. :mrgreen: Danke schon mal für eure (möglichen) Antworten. Gruß Stefan |
Re: Handles?!
Handles sind sozusagen "IDs" für alle GUI-Elemente, die Windows so anbietet: Fenster, Buttons, Edits... Alle TWinControls eben, und auch noch ein bisschen mehr.
Eine Message kann an ein Handle geschickt werden, um sein Verhalten zu bestimmen: Delphi schickt zum Beispiel eine Message an das Formular, um seine Beschriftung zu ändern. |
Re: Handles?!
Ok, das hab ich verstanden.
Aber wie wechsele ich das Fenster jetzt ganz konkret? Gruß Stefan |
Re: Handles?!
Ich versuch mal von ganz vorn anzufangen. Unter Windows ist so ziemlich alles ein Fenster. Ein Button, ein Textfeld, eine Listbox, die Taskleiste etc.
Jedes Fenster hat auch ein Handle welches dazu dient dieses Fenster anzusprechen. Es ist sozusagen die ID des Fensters. Wenn du ein Fenster maximieren, minimieren, neu zeichnen lassen, oder irgendetwas anderes damit machen willst musst du das über diese ID/Handle machen. Mit SendMessage kannst du eben an diese ID eine Nachricht schicken und zusätzliche Parameter. Der erste Paramter ist bei SendMessage das Handle, der zweite dann die Nachricht (z.B.: wm_paint damit sich was malt, wm_erasebkgnd damit der Hintergrund neu gemalt wird etc.) und die beiden letzten Paramter sind abhängig von der Message. Ab hier nur weiterlesen wenn du durcheinander gebracht werden willst :wink: Diese Handles sind also eine ganz praktische Sache um ein Fenster eindeutig zu identifizieren. Allerdings gibt es nicht nur für Fenster ein Handle sondern für viel weitere Sachen auch. Zum Beispiel wenn du dir Dateien eines Ordners auflisten lassen willst. Allerdings sind dies dann keine Fensterhandles mehr und somit geht auch SendMessage nicht zu verwenden. Willst du zum Beispiel den Inhatl eines Ordners auflisten ruft man FindFirst auf und es wird innerhalb der Struktur eine ID/Handle zurück gegeben. Über dieses Handle wird dann das Suchergebnis/Auflistungsergebnis angesprochen. So übergibt man FindNext eben diese Struktur mit dem Handle damit die Nächste gefundene Datei zurück geliefert wird etc. Im Endeffekt sind Handles (in deinem Fall Fensterhandles) also eine Art ID um etwas anzusprechen. [Edit] Zu deiner konkreten Frage. Dazu musst du die Message/Nachricht herausfinden welche dafür nötig ist und dann muss eben diese mit SendMessage an das Handle gesendet werden Aber am besten du erstellst für diese konkrete Frage einen neuen Thread und beschreibst was du ganz konkret vor hast. [/Edit] |
Re: Handles?!
Ok danke erstmal.
Ich mach dann einen neuen Thread auf. Gruß Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz