BlockInput nicht zuverlässig

  • Hallo AutoItler,

    AutoIt ist mir zwar schon länger bekannt, allerdings hab ich erst vor einigen Tagen mit Scripten begonnen.
    Mein bisheriges Script ist doch sehr übersichtlich, und trotzdem hakt es schon.
    Ich mache eigentlich nur ein wenig Fenster verschieben/skalieren und einige MouseMoves und -clicks.

    Damit das reibungslos funktioniert, habe ich Eingaben mit BlockInput gesperrt.
    Das funktioniert aus dem Editor heraus auch ausgezeichnet.

    ABER wenn ich das script als exe compiliere, und während der Ausführung die Maus bewege, werden die MouseMoves nicht mehr korrekt ausgeführt.

    Hat da vieleicht einer einen Tipp? System ist XP SP3.

    Nachfolgend das bescheidene Script

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=PSW-Start.exe
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;
    ; AutoIt Version: 3.0
    ; Language: English
    ; Platform: Win9x/NT

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

    ;Öffnet PSW-Professional, lädt Projekt und startet DDE-Verbindung
    If WinExists("PSW professional") Then Exit
    SplashTextOn ( "Meldung", "DDE-Verbindung wird hergestellt",300,50,-1,200,0,"",-1,700)
    BlockInput(1)
    Run("C:\PSWbasic-professional\PSWbasic-professional.exe")
    WinWait("Öffne Projekt-Datei")
    $h = WinGetHandle("Öffne Projekt-Datei")
    WinMove($h, "",0,0,800,600)
    WinActivate("Öffne Projekt-Datei")
    MouseMove(196,123,0)
    MouseClick("left")
    Sleep(200)
    MouseMove(80, 421,0)
    MouseClick("left")
    Sleep(200)

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

    WinWait("PSW professional")
    $g = WinGetHandle("PSW professional")
    WinMove($g, "",0,0,800,600)
    WinActivate("PSW professional")
    MouseMove(278,62,0)
    MouseClick("left")
    Sleep(200)
    WinSetState($g,"",@SW_HIDE)
    ;MouseMove(740,15,0)
    ;MouseClick("left")
    Sleep(200)
    BlockInput(0)
    SplashOff ( )
    Exit

    [/autoit]

    Wäre super wenn jemand einen (vlt. den entscheidenden) Hinweis hätte.

    Eifelgruß

    Eric

  • Hm,
    eigentlich hätte ich es auch gerne so gelöst, aber funktioniert ControlSend oder -click nicht nur mit Buttons?
    Oder wie bewerkstellige ich es, dass ein Element aus einem Stringfeld ausgewählt wird.

    Nachfolgend mal das Beispiel. Ich möchte Das Elemnt der Listbox auswählen und den "Öffnen"-Button betätigen.
    Die AutoIt Window-Info sagt mir nur das das Feld vom Typ TStringGrid ist.

    [Blockierte Grafik: http://img27.imageshack.us/img27/6326/psw.jpg]

    >>>> Window <<<<
    Title: Öffne Projekt-Datei
    Class: TForm_openPrj
    Position: 557, 297
    Size: 662, 448
    Style: 0x96C00000
    ExStyle: 0x00000101
    Handle: 0x000210B2

    >>>> Control <<<<
    Class: TStringGrid
    Instance: 1
    ClassnameNN: TStringGrid1
    Advanced (Class): [CLASS:TStringGrid; INSTANCE:1]
    ID: 69830
    Text:
    Position: 144, 80
    Size: 121, 193
    ControlClick Coords: 97, 14
    Style: 0x54010000
    ExStyle: 0x00000200
    Handle: 0x000110C6

    >>>> Mouse <<<<
    Position: 801, 420
    Cursor ID: 0
    Color: 0xBEBEBE

    >>>> StatusBar <<<<

    >>>> Visible Text <<<<
    Abbrechen
    Neu
    Öffne
    Auswahl Projekt-Datei
    Nach Laden des Projektes Verbindungstest ausführen
    Lösche Projekt
    Schewe
    FH-Trier
    Verbindung PC-UMG96S
    18.02.2009 12:34:22


    >>>> Hidden Text <<<<