Problem Kein text Eintrag

  • Habe nen Problem er trägt einfach nicht den Text ins Feld dieser ist aber Notwendig weis weiner vll wieso?


    [autoit]


    run("H:\Catia\Catia32bit\setup.exe")
    WinWait("Welcome")
    ControlClick("[CLASS:#32770]", "", "Button3")
    sleep(2000)
    ControlClick("[CLASS:#32770]", "", "Button3")
    sleep(2000)
    ControlClick("[CLASS:#32770]", "Weiter >", "[CLASS:Button; INSTANCE:3]")
    sleep(2000)
    ControlClick("[CLASS:#32770]", "Weiter >", "[CLASS:Button; INSTANCE:3]")
    sleep(1000)
    send("{ENTER}")
    sleep(2000)
    ControlSend("[CLASS:#32770]", "", "[CLASS:Edit; INSTANCE:1]", "CATIA")

    [/autoit]

    Einmal editiert, zuletzt von Mitnick (22. März 2010 um 13:01)

  • Schwer zu sagen ohne weitere Informationen und ohne Vorliegen des Programmes.
    Mir fällt auf: Ich kann nicht mehrere Fenster unterscheiden anhand deines Codes - das Fenster könnte immer das selbe sein und eindeutig wird es nicht.
    Da du in einem anderen Post meintest du wölltest keinen Fenstertitel eintragen sondern die Class führt das nun dazu das du die Fenster nicht mehr voneinander unterscheiden kannst.
    Sie haben ja alle die selbe Class.
    Jetzt nimmt man zur genaueren Unterscheidung eigentlich den 2. Parameter, welcher eine beliebige Textpassage aus dem Fenster darstellt (natürlich am besten ein Textausschnitt welcher wirklich nur in diesem Fenster vorkommt).
    Aber du hast diesen ja gar nicht benutzt bzw. stattdessen den Text des Controls eingetragen.
    Da ich davon ausgehe dass in weiteren Fenstern Buttons mit dem Text >Weiter existieren ist dieser Parameter also auch nicht dienlich zur Unterscheidung der Fenster.
    Auch wenn ich jetzt absolut nichts vorliegen habe versuche ich dir mal einen kleinen Grundaufbau, auf Grundlage deines letzten Threads, vorzugeben bei dem ich hoffe das dir ein bisschen was klarer wird:

    Spoiler anzeigen
    [autoit]

    $hWinHandle = WinWait("CATIA V5R19 - Benutzerdefinierte Verknüpfungen erstellen", "irgendein Textabschnitt aus DIESEM Fenster")
    ControlClick($hWinHandle, '', "Button3")

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

    ; Der Titel muss auch nicht unbedingt komplett ausgeschrieben werden:
    $hWinHandle = WinWait("CATIA V5R19 - Dokumentation", 'irgendein Textabschnitt aus dem Fenster "Dokumentation auswählen"')
    ControlClick($hWinHandle, '', "Button3")

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

    $hWinHandle = WinWait("CATIA V5R19 - Kopieren der Dateien starten", 'Wie immer: Textabschnitt aus genau dem Fenster "Kopieren starten"')
    ControlClick($hWinHandle, '', "Button3")
    ControlSend($hWinHandle, "", "Edit1", "CATIA") ;weiß nicht ob das schon hier zu diesem Fenster gehört?

    [/autoit]


    Du siehst hier dass ich bei ControlClick nur die Variable $hWinHandle statt weiterer Window-Informationen eintrage.
    Ein Handle ist eine eindeutige Bezeichnung für ein Fenster so dass man keine weitere Informationen dazu braucht.
    WinWait gibt eine solch eindeutige Nummer für ein Fenster zurück (seit AutoIt v3.3.2.0) so dass man sicher sein kann dass sich das nachfolgende ControlClick auf exakt dieses Fenster bezieht.

    Einmal editiert, zuletzt von AspirinJunkie (22. März 2010 um 10:16)

  • Ich hänge einfach mal meine Frage hier dran.

    Bei manchen Installationen gibt es den Fall, dass der "Next" Button eine gewisse Zeit erstmal ausgegraut wird und nach ca. 3s erst aktiv wird.

    Natürlich kann man da einen sleep einbauen, aber das ist ja eher so eine Glückssache ob der passt (falls mal der Rechner etwas mehr belastet wird) und ich will kein Lotto spielen. ^^

    Gibt es einen "WinWaitActive()" auch für Buttons?

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  • Sehr cool, danke!

    Es gibt einfach so viele Befehle, da sucht man sich nen Wolf in der Hilfe! :)

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.