AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WM_SETTEXT eines Windows rückgängig machn
Thema durchsuchen
Ansicht
Themen-Optionen

WM_SETTEXT eines Windows rückgängig machn

Ein Thema von phlux · begonnen am 28. Dez 2002 · letzter Beitrag vom 29. Dez 2002
Antwort Antwort
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

WM_SETTEXT eines Windows rückgängig machn

  Alt 28. Dez 2002, 20:15
Hi!
Hab mit WM_SETTEXT die Caption eines Fensters umgeändert, gibt es irgend ne Message das wieder rückgängig zu machen, also das das fenster alles neu einliest? Oder muss ich das auf nem umständlichen weg machen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 28. Dez 2002, 20:18
Ein "Undo" gibt es dafür nicht. Aber Du kannst doch die alte Caption in einer Variable speichern und bei Bedarf wieder zurückschreiben (WinAPI :: GetWindowText).
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 28. Dez 2002, 20:36
lol* das versuche ich ja auch schon den ganzen abend, nur stell ich mir irgendwie immer selbst beinchen mal morgn in ruhe gucken
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 29. Dez 2002, 03:55
Moin Phlux,

wenn Du das auslesen mit GetWindowText versuchst, kann es sein, dass das nicht funktioniert.
Das sollte, gerade wenn man ein fremdes Fenster anspricht, besser mit WM_GETTEXT gemacht werden.

Wenn Du hier im Forum mal noch der Message (WM_GETTEXT) suchst, solltest Du Beispiele finden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#5
  Alt 29. Dez 2002, 09:48
Moin Chris!
Das auslesen des Fenstertextes geschieht bereits über WM_GETTEXT stand so in den Delphi FAQsen drin, ich versuche erst mit GetForeGroundWindow das Handle vom aktiven Fenster zu bekommen um dann den Text zu verändern.
Kann man zwei Handles eigentlich vergleichen? Also
Delphi-Quellcode:
  If old_wnd <> new_wnd then
  (*...*)
zum Beispiel? Ich hab wahrscheinlich gestern nur wieder wahllos die Handles durcheinander gehauen Falls das geht mit dem Handle unterscheiden Müsste ich ja nur gucken wann sich der Handle geändert hat um dann das alte (nicht mehr aktive) Fenster wieder die alte Caption zu geben.
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 29. Dez 2002, 13:56
Moin Phlux,

grundsätzlich kann man Handles natürlich vergleichen, aber das kann gefährlich werden.

Wenn ein Fenster erzeugt wird, wird das Handle belegt.
Wird das Fenster wieder zerstört, wird das Handle wieder freigegeben.

Jetzt kann es aber passieren, das irgendein neu erzeugtes Fenster das Handle bekommt, das Du Dir gespeichert hattest.
Ob sich das in Deinem speziellen Falle auswirken würde kann ich natürlich nicht sagen, aber ausschliessen möchte ich es nicht.

Sicherer wäre es wenn Du Dir die Caption merkst, die Fensterklasse und das Handle.
Wenn die Kombination aus Caption und Klasse eindeutig ist, kannst Du dann mit FindWindow das Handle abfragen und mit Deinem gespeicherten vergleichen, ansonsten könntest Du über EnumWindows alle Fenster der gewünschten Caption/Class Kombinationen durchsuchen und prüfen, ob Dein gespeichertes Handle noch existiert.

Das wäre dann zwar ziemlich aufwändig, und wie es sich auf die Geschwindigkeit Deines Programmes auswirkt vermag ich auch nicht zu beurteilen, aber es wäre zumindest eine sichere Methode (die mir so auf die Schnelle spontan dazu einfällt )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#7
  Alt 29. Dez 2002, 15:08
G* also ich hätte da schon einiges zu Überlegen gebraucht ich werde jetzt erst einmal versuchen das es läuft und dann werde ich nach und nach das einbauen was du meinst.
Wie krieg ich denn die Fensterklasse raus, kann sein das es mir auch nur unter einem anderem Begriff geläufig ist wäre nett wenn du mir da mal nen Tipp gibst
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 29. Dez 2002, 15:12
Moin Phlux,

schau Dir mal die API GetClassName an.
Ich denke damit solltest Du zurecht kommen.
(Ausserdem gibt's dazu hier im Forum bestimmt Beispiele)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 23: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