Daten aus einem anderen Fenster lesen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Neptunar
Beiträge: 24
Registriert: 10.05.2005 16:46
Wohnort: Hmmm.... wenn ich das wüsste

Daten aus einem anderen Fenster lesen

Beitrag von Neptunar »

... und ich hab mal wieder ne kleine Frage ;)

ich wollte mal wissen, wie ich auf einem fremden Fenster auf die Gadgets zugreifen will, ich wollte mal aus langer weile die Befehle aus der Liste in der Pure Basic Hilfe auslesen, habe aber kein Schimmer wie das gehen soll.

Das Fenster finden und schließen geht mit FindWindow_() und PostMessage_(), aber wie kann ich auf Gadgets zugreifen? o_O

Danke und Gruß Neptunar
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Hi Neptunar

Folgendes: Um an die Adresse der Gadgets zu kommen, nutzt man EnumChildWindows_()

Hier ein kleines Beispiel (das zeigt, von wem Paint wirklich ist ;)), das allerdings nur unter XP funzt (EnumChildWindows_() klappt auch anderswo, aber die Gadgets in Paint haben bei anderen Windowsversionen andere Titel und texte, somit kann ich die nicht finden)


Code: Alles auswählen

NewList Windows()

Procedure Enum(wert1,wert2)
           AddElement(Windows())
           Windows()=wert1
           ProcedureReturn wert1
EndProcedure           

RunProgram("mspaint.exe")
Delay(250)
Repeat
   Delay(100)
   If FindWindow_(0,"Info über Paint")
      EnumChildWindows_(FindWindow_(0,"Info über Paint"),@Enum(),1)
      text.s=Space(2000)
      ForEach Windows()
          GetWindowText_(Windows(),text,2000)
          Select text
               Case "Microsoft ® Paint"
                        SetWindowText_(Windows(),"FWProductions ® Pure GraphicShop")
               Case "Copyright © 1981-2001 Microsoft Corporation"
                        SetWindowText_(Windows(),"Copyright was hurt by: Microsoft Corporation...Just a joke ;-)")
         EndSelect 

      Next
   EndIf
Until FindWindow_(0,"Unbenannt - Paint")=0   
End 
Um das ergebnis zu sehen einfach starten, dann im Startendenden Paint im menu auf Infoklicken und das Infofenster einmal aus dem Sichtbaren Bereich schieben und dann wieder zurück ins sichtbare ziehen.


So greift man auf andere Fenster zu. Inwiefern das auch mit der Hilfe funzt, weiß ich nicht. Willst du es rechts aus dem Listview lesen, könntest du mit GetClassName_() arbeiten, um das Gadget zu kriegen.
Du musst allerdings noch bedenken, dass es auf einem Panelgadget liegt. Das bedeutet, dass du erst das Panelgadget finden musst und dann auf dem Fenster für den Eintrag "Index" das Listview suchen kannst.

Aus dem rechten teil des Fensters zu lesen sollte schwer sein, da es ein WEbgadget ist.

Ich hoffe, ich konnte dir helfen, zumindest etwas
:roll:
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Antworten