Wie ein AutoIT-GUI-Fenster umbenennen? GUICreate & GUICtrlSetData

  • ?( Hallo Leute,

    bin neu bei AutoIT, habe mich aber schon ein gutes Stück durchgearbeitet.
    Was ich nicht hinbekomme, ist wie man ein erstelltes Hauptfenster - erstellt mit GUICreate("defaultTitle", ...) - im laufenden Betrieb umbenennt. Ich versuche es mit GUICtrlSetData($hGUI, "new Title"), das geht aber nicht (keine Änderung, aber auch kein Fehler).
    Dies Ist aber auch nicht verwunderlich, da in der GUICtrlSetData-Dokumentation das Handle GUICreate auch nicht aufgeführt wird. Es gibt anscheindend auch keine libFunction (_GUICreate oder so) für solches.


    Sucht man in den Foren oder über eine Suchmaschine nach GUICreate und GUICtrlSetData, so bekommt man tausende von Treffern - hauptsächlich von Tutorials und Skripten. Auch in den meisten Skripten, die ich mir angeschaut habe, wird der Fenstertitel nicht verändert.


    Daher hier die eher einfache Frage: wie macht ihr das?


    Angehängt ein Auszug aus meinem Skript.

  • Hi,

    Zitat

    Sucht man in den Foren oder über eine Suchmaschine nach GUICreate und GUICtrlSetData

    Ich dachte, du wolltest den Fenstertitel ändern?!
    Dann sucht man in einer Suchmaschine mittels

    Code
    fenstertitel ändern site:www.autoit.de

    und bekommt die entsprechenden Treffer.
    Oder man sucht in der AutoIt-Hilfe, um

    [autoit]

    WinSetTitle()

    [/autoit]

    zu finden...

  • :rock: Danke für den Tipp:


    ;showing loaded info at window title
    WinSetTitle($mainWindowTitleDefault, "", $mainWindowTitleDefault & " - some loaded info")

    funktioniert. Also manipuliere ich mit WinSetTitle über die Microsoft-Desktopmanager-API das eigene Fenster - krass. Von Hinten durch die Brust.
    Die Online-Dokumentation für WinSetTitle (http://www.autoit.de/dokumentation/functions/WinSetTitle.htm)
    könnte aber für meine Geschmack etwas mehr Informationen vertragen. Die Bedeutung des 2ten Parametes "text" habe ich beim Lesen nicht verstanden, auch das Beispiel geht darauf nicht ein.

  • Hi,

    Ich dachte, du wolltest den Fenstertitel ändern?!
    Dann sucht man in einer Suchmaschine mittels

    Code
    fenstertitel ändern site:www.autoit.de

    und bekommt die entsprechenden Treffer.
    Oder man sucht in der AutoIt-Hilfe, um

    [autoit]

    WinSetTitle()

    [/autoit]

    zu finden...


    Wie gesagt, ich bin neu.
    GUICtrlSetData, weil bislang bei allen GUI-Elementen das Setzen von Daten über GUICtrlSetData ging.

    GUICreate: das ist halt die Methode zum erzeugen des Windows-Handles. "GUI" oder "Window" zu nehmen würde die Suche explodieren lassen

    Und die Funktion WinSetTitle habe ich (leider) in meinen Überlegungen nicht einbezogen, da ich sie als Methode zum Manipulieren von anderen, externen Fenstern wahrnahm - ich suchte halt nach einen "internen" Lösung - die es anscheinend nicht gibt. Eigentlich eine Funktions-Lücke.

  • Hi,

    Zitat

    Also manipuliere ich mit WinSetTitle über die Microsoft-Desktopmanager-API das eigene Fenster - krass. Von Hinten durch die Brust.

    wie auch sonst?! Oder glaubst du, das "eigene" Fenster wäre etwas besonderes?

    Zitat

    Und die Funktion WinSetTitle habe ich (leider) in meinen Überlegungen nicht einbezogen, da ich sie als Methode zum Manipulieren von anderen, externen Fenstern wahrnahm - ich suchte halt nach einen "internen" Lösung - die es anscheinend nicht gibt. Eigentlich eine Funktions-Lücke.

    Wenn du "interne" (was das auch immer für Funktionen sein mögen) brauchst, steht dir frei, eigene Funktionen zu schreiben!
    Allerdings habe ich immer noch nicht verstanden, was der Unterschied von "deinem" zu den "anderen" Fenstern sein soll?! Wie anders als über die API willst du API-spezifische Funktionen verwirklichen?

  • Hi,

    wie auch sonst?! Oder glaubst du, das "eigene" Fenster wäre etwas besonderes?

    Wenn du "interne" (was das auch immer für Funktionen sein mögen) brauchst, steht dir frei, eigene Funktionen zu schreiben!
    Allerdings habe ich immer noch nicht verstanden, was der Unterschied von "deinem" zu den "anderen" Fenstern sein soll?! Wie anders als über die API willst du API-spezifische Funktionen verwirklichen?

    Hi,

    wie auch sonst?! Oder glaubst du, das "eigene" Fenster wäre etwas besonderes?

    Wenn du "interne" (was das auch immer für Funktionen sein mögen) brauchst, steht dir frei, eigene Funktionen zu schreiben!
    Allerdings habe ich immer noch nicht verstanden, was der Unterschied von "deinem" zu den "anderen" Fenstern sein soll?! Wie anders als über die API willst du API-spezifische Funktionen verwirklichen?


    Hier meine Überlegungen:

    "Oder glaubst du, das "eigene" Fenster wäre etwas besonderes?"

    Das "eigene" Fenster ist mMn deshalb etwas besonderes, da ich ja über die eigene Logik die Gestaltung und GUI-Objekte manipulieren kann (Stichwort: $GUI_EVENT_MINIMIZE, Opt("GUIResizeMode", $GUI_DOCKSIZE), GUISetState(@SW_HIDE) und Konsorten). Aber es scheint so (man möge mich bitte korrigieren), das NACH der Fenstererzeugung auf [alle|einige|mindestens der Fenstertitel] Elemente nicht mehr "von innen" eingewirkt werden kann, sondern nur noch über das MS-API. Wieder was gelernt. Da ich das aber in seinem Umfang nicht wusste, suchte ich eben über eine innere Methode und bin daher in meinen Überlegungen auch nicht WinSetTitle in Betracht gezogen, da dies Funktion ja ganz klar für die Manipulation anderer Fenster gedacht ist.


    "Wie anders als über die API willst du API-spezifische Funktionen verwirklichen?"

    Wenn man nicht weiss, das es eine API-spezifische Funktion ist, sucht man halt "innere" Logik-Elemente,


    Noch ein kleiner Hinweis auf tote Links in der Online-Dokumentation: Bei meiner Suche nach einer Lösung bin ich auf der Doku zu GUICreate (http://www.autoit.de/dokumentation/functions/GUICreate.htm) unten bei den verwandten Funktionen auf die toten Links zu GUISet (nach sowas habe ich gesucht) und GUICtrlCreate gestoßen).

  • Im übriegen hast du auch die Offlinehilfe :whistling:
    Und wenn du sie auf deutsch brauchst, siehe linke Seite.