Button in einem Fenster klicken

  • Hallo,
    befasse mich seit kurzen mit Autoit und ich habe folgendes Problem:
    ich möchte in einem Fenster einen Button klicken, mit Windowinfo geschaut wie der Button heist damit ich ihn per ControlClick anwählen kann, vorher noch ben parameter damit das Script wartet das das Fenster auch aktiv ist.

    Aber eben dieses funktioniert nicht.

    Probiert habe ich auch schon diesen Button per Coordinaten zu klicken.
    Ich habe das gefühl das er das Fenster nicht findet.

    In dem Windowinfo steht ja drin wie das heist und man kann ja noch vorgeben ob da nach Text Passagen gesucht wird.


    Hoffe das das halbwegs verständlich ist was ich will, kann mich so schlecht erklären ;)

  • hi hi,

    also hier mal die Infos aus dem Infofenster

    >>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    Title: AcronisTrueImageServer
    Class: MsiDialogCloseClass
    Size: X: -1 Y: 23 W: 503 H: 407

    >>>>>>>>>>> Mouse Details <<<<<<<<<<<
    Window: X: 348 Y: 379
    Cursor ID: 2

    >>>>>>>>>>> Pixel Color Under Mouse <<<<<<<<<<<
    RGB: Hex: 0x000000 Dec: 0

    >>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    Size: X: 293 Y: 346 W: 86 H: 24
    Control ID: 1468
    ClassNameNN: Button1
    Text: &Weiter >

    >>>>>>>>>>> Status Bar Text <<<<<<<<<<<


    mir geht es da um den Button1


    und hier das was ich da im Script zu verfasst habe


    die Variable $Title hab ich mit dem Fensternamen deklariert
    $Title = "Acronis True Image Server"


    ; Welcome-Screen
    WinWaitActive($Title, "Dieser Assistent führt Sie durch die Installationsprozedur")
    ;MouseClick ("", 340, 380, 5 ) versuchsweise anstelle des ControlClicks
    ControlClick ($Title , "" , "Button1", 5 )

    hoffe das das etwas übersichtlich ist

  • so vll.

    Code
    ControlClick ($Title , "", " &Weiter >", "Button1", 5 )

    oder

    Code
    WinWait("Dieser Assistent führt Sie durch die Installationsprozedur") 
    Send("!w")

    2 Mal editiert, zuletzt von weedhead (20. Dezember 2006 um 12:39)

  • jo einfach ist auch gut da programieren und Scripte schreiben jenseits meiner Welt ist :)

    mit den genannten Begrifflichkeiten müsste ich mich mal auseinander setzen, da sie mir so nichts sagen.

    das mit dem "&weiter" getestet funzt so nicht , das andere grad erst gelesen werd ich auch nochmal ausprobieren

  • hiho,
    das einfache funzt leider nicht.
    Was ich mich frage , gibt es eine Art debug modus wo man alle posten im Script einzeln ablaufen lassen kann?

    Ansonst müsste ich scheinbar mal testen ob das Fenster überhaupt angewählt wird.

    • Offizieller Beitrag

    Hi,

    sowas einfaches kannst du doch schnell testen:

    [autoit]


    While 1

    If WinActive("AcronisTrueImageServer") Then
    MsgBox(64, "Info", "das Fenster ist aktiv!", 3)
    ControlClick("AcronisTrueImageServer", "", 1468, "left", 1)
    EndIf

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

    Sleep(100)
    WEnd

    [/autoit]

    So long,

    Mega

  • Sorry wenn ich dumm frage, aber wie bau ich das da genau so ein?
    hab die Script Passage einfach mal copy&paste und es passiert nüscht.

    Ist halt son Prob für mich, programmieren istn Buch mit 7 Siegeln :D
    leider muss ich mich damit auseinander setzen.

    evtl sollte ich mal das komplette Script posten, wegen den Zusammenhängen?

    • Offizieller Beitrag

    Hi,

    entweder das Skript posten, oder einfach erstmal mit anderen Fenstern testen und die Arbeitsweise verstehen.

    Z.B. Starte mal die Hilfe von Autoit und dann laß dieses Skript laufen.

    [autoit]


    While 1

    If WinActive("AutoIt Help") Then
    MsgBox(64, "Info", "das Fenster ist aktiv!", 3)
    EndIf

    Sleep(100)
    WEnd

    [/autoit]

    Die Engl Hilfe!

    So long,

    Mega

  • Soa das wäre das Script, es soll das Prog für mich insten.

    Spoiler anzeigen
    [autoit]


    Opt ("MouseCoordMode", 0) ;1=absolut zum Bildschirm, 0=relativ zum Fenster

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

    ; Starte True Image-Setup
    Run("setup.exe")
    $Title = "Acronis True Image Server"
    $RegKey = "(hier steht mein key)"

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

    ; auf das Program warten
    ; Startbildschirm
    WinWaitActive("Acronis True Image Server Setup", "")
    MouseClick ( "", 440, 245 )

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

    ; Welcome-Screen
    While 1

    If WinActive("AcronisTrueImageServer") Then
    MsgBox(64, "Info", "das Fenster ist aktiv!", 3)
    ControlClick("AcronisTrueImageServer", "", 1468, "left", 1)
    EndIf

    Sleep(100)
    WEnd

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

    ; Lizenzvertrag
    WinWaitActive($Title, "Lizenzvereinbarung")
    ControlClick ( $Title , "" , "Button3" )
    ControlClick ( $Title , "" , "Button5" )

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

    ; Seriennummer
    WinWaitActive($Title, "Geben Sie die Seriennummer")
    Send($RegKey)
    WinWaitActive("VM-Wait", "", 2)
    ControlClick ( $Title , "" , "Button5" )

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

    ; Setup-Typ, Komplett
    WinWaitActive($Title, "Setup-Typ")
    ControlClick ( $Title , "" , "Button3" )

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

    ; Ja, für alle Benutzer
    WinWaitActive($Title, "Administrator-Optionen wählen")
    ControlClick ( $Title , "" , "Button4" )
    ControlClick ( $Title , "" , "Button1" )

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

    ; Setup-Zusammenfassung
    WinWaitActive($Title, "Setup hat genügend Informationen")
    ControlClick ( $Title , "" , "Button1" )

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

    ; Installation fertig
    WinWaitActive($Title, "Installation komplett")
    ControlClick ( $Title , "" , "Button1" )

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

    ; Neustart?
    WinWaitActive("Bestätigung", "")
    MouseClick ( "", 280, 135 )

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

    ; Startup-Screen beenden
    WinWaitActive("Acronis True Image Server Setup", "")
    MouseClick ( "", 45, 460 )

    [/autoit]


    so soll das aussehen wenns mal läuft, komm aber über den genannten Punkt nicht hinaus.

    Hab das Script mal getestet, "glaube" verstehe auch *g* liege dann warscheinlich garnicht so falsch damit das das fenster da irgendwie nicht aktiv ist

    • Offizieller Beitrag

    Hi,

    habe bei dir mal Spoiler eingefügt.

    Spoiler anzeigen
    [autoit]


    Opt("MouseCoordMode", 0) ;1=absolut zum Bildschirm, 0=relativ zum Fenster
    Opt("WinTitleMatchMode", 4)
    AdlibEnable("check", 250)
    ; Starte True Image-Setup
    Run("setup.exe")
    $Title = "Acronis True Image Server"
    $RegKey = "(hier steht mein key)"

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

    ; auf das Program warten
    ; Startbildschirm
    WinWaitActive("Acronis True Image Server Setup", "")
    MouseClick("left", 440, 245)

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

    ; Welcome-Screen
    While 1

    If WinActive("AcronisTrueImageServer") Then
    MsgBox(64, "Info", "das Fenster ist aktiv!", 3)
    ControlClick("AcronisTrueImageServer", "", 1468, "left", 1)
    EndIf

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

    Sleep(100)
    WEnd

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

    ; Lizenzvertrag
    WinWaitActive($Title, "Lizenzvereinbarung")
    ControlClick($Title, "", "Button3")
    ControlClick($Title, "", "Button5")

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

    ; Seriennummer
    WinWaitActive($Title, "Geben Sie die Seriennummer")
    Send($RegKey)
    WinWaitActive("VM-Wait", "", 2)
    ControlClick($Title, "", "Button5")

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

    ; Setup-Typ, Komplett
    WinWaitActive($Title, "Setup-Typ")
    ControlClick($Title, "", "Button3")

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

    ; Ja, für alle Benutzer
    WinWaitActive($Title, "Administrator-Optionen wählen")
    ControlClick($Title, "", "Button4")
    ControlClick($Title, "", "Button1")

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

    ; Setup-Zusammenfassung
    WinWaitActive($Title, "Setup hat genügend Informationen")
    ControlClick($Title, "", "Button1")

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

    ; Installation fertig
    WinWaitActive($Title, "Installation komplett")
    ControlClick($Title, "", "Button1")

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

    ; Neustart?
    WinWaitActive("Bestätigung", "")
    MouseClick("left", 280, 135)

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

    ; Startup-Screen beenden
    WinWaitActive("Acronis True Image Server Setup", "")
    MouseClick("left", 45, 460)

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

    Func check()
    ToolTip(WinGetTitle("active"), 0, 0)
    EndFunc ;==>check

    [/autoit]

    Jetzt solltest du im ToolTip sehen, wie das aktive Fenster heißt.

    So long,

    Mega

  • tag,
    also auch das veränderte script macht sehr wenig, nämlich genausoviel wie das alte *g*

    im tooltip, falls das wininfo fenster gemeint ist, steht so wie ich meine das selbe wie vorher.

  • hallo und ein frohes neues jahr.
    kannst du mir die func _FileWriteLog mal erklären wie ich die schreibe? Werde aus der Hilfe nicht schlau.

    Das bissel programieren stresst mich schon *g* machs auch nur weil ich muss.
    Aber irgendwann muss oder sollte ich das ja mal verstehen

    bis denn

    • Offizieller Beitrag

    Hallo!

    Der Aufruf von FileWriteLog geht volgendermaßen:

    [autoit]

    #include <file.au3>
    $sDateiName = "C:\test.txt"
    $sText = "Hallo log 001 :)"
    _FileWriteLog($sDateiName,$sText);schreibt in C:\test.txt: Jahr-Monat-Tag Stunde:Minute:Sekunde : Hallo log 001 :)
    ;also z.B.: 2007-01-02 11:34:35 : Hallo log 001 :)

    [/autoit]

    Viel spaß und viel Erfolg noch bei programieren!

    Mfg Spider

  • hallo,
    ok soweit so gut, wie stell ich es an das er mir den script text soweit ausgibt wie er gekommen ist. Damit ich weis wo der hängen bleibt.

    Denn im Moment ist es mir nicht ersichtlich wieso das script an der Stelle nicht mehr weiter geht.

    Bekomm schon graue Haare *g*

    • Offizieller Beitrag

    Das geht viel einfacher, wenn ich es richtig sehe:

    [autoit]

    Opt("TrayIconDebug", 1)

    [/autoit]


    Das oben in dein Skript, dann kannst du mit der Maus über das Icon deines Skriptes im Systray fahren und bekommst die aktuelle Zeile angezeigt, die gerade ausgeführt wird. Geht im kompilierten Zustand schlecht oder gar nicht, also für diesen Test die au3-Datei ausführen.

    peethebee


    Edit: Post N° 1500 :party4:

  • hiho,
    das mit dem debug funzt, aber irgendwie findet das Script das erste Fenster nicht mehr, glaub hab zuviel im Quelltext drin rum geschrieben, das das nun ganz kirre ist.

    Edit: Ok Anfang funzt wieder, Script hängt an der selben Stelle wie zu Anfang wo er scheinbar das Fenster nicht findet

    Edit2: Script läuft bis Zeile 19 (ohne den Sleeptimer) ansonst bis Zeile 24
    bekomme auch keine Meldung das das Fenster aktiv ist. Also was könnte das dann sein? Fenster namen hab ich ja drin und einen Teil des Textes zum identifizieren des Fensters.

    Noch Ideen die ein Ungeübter schaffen könnte?

    2 Mal editiert, zuletzt von Praktikant (2. Januar 2007 um 14:21)