AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Handles?!

Ein Thema von Stefan92 · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#1

Handles?!

  Alt 22. Jan 2007, 20:51
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.

Danke schon mal für eure (möglichen) Antworten.

Gruß

Stefan
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Handles?!

  Alt 22. Jan 2007, 20:59
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Handles?!

  Alt 22. Jan 2007, 21:03
Ok, das hab ich verstanden.
Aber wie wechsele ich das Fenster jetzt ganz konkret?

Gruß

Stefan
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Handles?!

  Alt 22. Jan 2007, 21:04
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
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]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Stefan92

Registriert seit: 9. Jan 2007
146 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Handles?!

  Alt 22. Jan 2007, 21:45
Ok danke erstmal.
Ich mach dann einen neuen Thread auf.

Gruß

Stefan
  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 04:43 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