dynamischer classenname

  • So, ich hoff ich nenn das hier richtig also ich versuche mal mein problem zu erklären...
    folgendes...
    ich versuche mit ControlSendText einen Text in einer Messagebox eines fremden Programms zu ändern, was mir auch problemlos gelingt, NUR, auf anderen PC's hat die Class einen anderen namen, somit kann ich mit ControlSenText nicht mein Ziel erreichen (zumindest weiss ich nicht wie), da ich den classname ja fix implementiert habe...

    Also beispiel:
    ControlSetText("Titel des Fensters","Text des Fensters","[CLASS:WindowsForms10.STATIC.app.0.378734a; INSTANCE:4]","Neuer Text")
    Das rot markierte ändert sich jedoch auf anderen pc's.. wodurch dann ControlSetText ins leere bzw falsche läuft...
    Text des Fensters lass ich des öffteren auch einfach leer... sollte egal sein...?

    Ist es möglich dennoch iwie genau diesen Text zu ändern?

    Einmal editiert, zuletzt von aj1987 (25. Januar 2012 um 16:58)

  • Servous, du könntest dir den Handle des Programms holen dann den Handel des Controls innerhalb des Programms und dann seine Momentane Klasse und aufgrund der geholten infos dann deinen SetText aufrufen..

    Gruß Marvin

  • Ändert sich der Title des Messagebox? Wenn nicht könntest du es mit

    [autoit]

    WinSetTitle

    [/autoit]


    versuchen

    €: Sorry habe zu spät gemerkt das du nicht den Title sondern den Text ändern möchtest

  • funkey, gibt es dann nicht Komplikationen mit der Auflösung? sollte das Fenster sich dynamisch verändern sitzt der Button immer an einer anderen Stelle..

    Gruß Marvin

  • Servous, du könntest dir den Handle des Programms holen dann den Handel des Controls innerhalb des Programms und dann seine Momentane Klasse und aufgrund der geholten infos dann deinen SetText aufrufen..

    Gruß Marvin

    ömm, ich hab zwar schon einige scripte erstell aber das hört sich jetzt mal etwas kompliziert an... dennoch ich werd das mal versuchen umzusetzten...
    thx

    Du kannst ein Control auch aufgrund seiner Position und Größe ermitteln.

    Ich will keine positionen suchen, das ganze sollte recht flott gehen und flexibel bleiben

    funkey, gibt es dann nicht Komplikationen mit der Auflösung? sollte das Fenster sich dynamisch verändern sitzt der Button immer an einer anderen Stelle..

    Gruß Marvin

    theoretisch wäre es möglich da sich ein Control im fenster nicht bewegt... denk ich...

    EDIT:
    Ok, hab jetzt eine lösung gefunden!
    Und zwar folgendes..
    Ich habe mir mir

    [autoit]

    WinGetClassList()

    [/autoit]

    , eine Liste aller im Fesnter befindlichen Classnamen ausgeben lassen... Somit konnte ich dann gut weiter arbeiten ;)

    Beispiel für jeden der hier Hilfe sucht:

    [autoit]

    #include <String.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $classlist = WinGetClassList("Titel", "Text")
    Global $class_array = _StringExplode($classlist,@LF)
    MsgBox(0,0,$class_array[0])
    exit 10

    [/autoit]

    4 Mal editiert, zuletzt von aj1987 (25. Januar 2012 um 17:34)

  • Hab deinen Code mal etwas umgeändert um es übersichtlicher un funktineller zu machen...

    [autoit]

    #include <String.au3>
    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $classlist = WinGetClassList("TITEL", "")
    Global $class_array = _StringExplode($classlist,@LF)
    _ArrayDisplay($class_array)
    exit 10

    [/autoit]