Controlsend - Wie spreche ich das richtig an?

  • Hallo,

    ich hab probleme mit Controlsend.
    Es funktioniert nicht wirklich wenn ich entweder den Namen des Fensters eingebe oder versuche das Handle einzugeben.

    Wie mache ich das richtig?

    [autoit]


    Global $oExcel
    Global $Pfad
    Global $oWorkbook
    Global $A17 ;Cockpit Benutzername
    Global $A18 ;Cockpit Kennwort
    Global $C17 ;ProgrammPfad

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

    #include <Excel.au3>

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

    Local $oExcel = _Excel_Open(0,0,0,0,1) ;Variable Excel Öffnen
    Local $Pfad = @ScriptDir & "\Datei_V2.xlsx" ;Variable Pfad und Datei - Diese Datei sollte bereits existieren
    Local $oWorkbook = _Excel_BookOpen($oExcel, $Pfad) ; Variable Workbook inklusiv Excel öffnen und Pfad

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

    $A17 = _Excel_RangeRead($oWorkbook,"Tabelle1", "A17")
    $A18 = _Excel_RangeRead($oWorkbook,"Tabelle1", "A18")
    $C17 = _Excel_RangeRead($oWorkbook,"Tabelle1", "C17")

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

    _Excel_Close($oExcel)

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

    ShellExecute ($C17)
    WinWait ("Anmeldung","")
    local $hWnd = WinGetHandle("Anmeldung","")
    Local $hControl = ControlGetHandle ($hWnd,"","")

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

    MsgBox (0,"MSG",$hWnd & @LF & $hControl)

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

    ControlSend ("","","[CLASS:Internet Explorer_Server; INSTANCE:1]","^{a}{DEL}",0) ;Funktioniert
    ControlSend ("Anmeldung","","[CLASS:Internet Explorer_Server; INSTANCE:1]",$A17,1) ;Funktioniert nicht
    ControlSend ($hControl,"","[CLASS:Internet Explorer_Server; INSTANCE:1]","{TAB}^{a}{DEL}",0) ;Funktioniert nicht
    ControlSend ($hWnd,"","[CLASS:Internet Explorer_Server; INSTANCE:1]",$A18,1) ;Funktioniert nicht
    ;ControlSend ("","","[CLASS:Internet Explorer_Server; INSTANCE:1]","{TAB}{ENTER}",0)

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

    Exit

    [/autoit]


    >>>> Window <<<<
    Title: Anmeldung - Windows Internet Explorer
    Class: IEFrame
    Position: -1920, 0
    Size: 1920, 1080
    Style: 0x16CF0000
    ExStyle: 0x00000100
    Handle: 0x0007045A

    >>>> Control <<<<
    Class: Internet Explorer_Server
    Instance: 1
    ClassnameNN: Internet Explorer_Server1
    Name:
    Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
    ID:
    Text:
    Position: 0, 80
    Size: 1904, 992
    ControlClick Coords: 1330, 290
    Style: 0x56000000
    ExStyle: 0x00000000
    Handle: 0x00070240

    Einmal editiert, zuletzt von skorpion-de (25. Oktober 2015 um 12:08)

  • Für Excel gibt es die Excel.au3, diese benztzerdefinierte UDF ist standardmäßig bei AutoIt dabei. Damit löst du das Problem einfacher.

    Edit: Warum die angehängten Ergebnisse so gar nichts mit Excel zu tun haben wundert mich allerdings. Am besten beschreibst du was du erreichen willst, dann wird sich schon eine Lösung finden.
    Für den Internetexplore benutzt man am besten die IE.au3.

  • Nun ich lese aus Excel Benutzername und Passwort aus und übergebe diese einer Variablen.
    Danach starte ich die Web-Anwendung und möchte die dort eintragen.

    Das Eintragen funktioniert, entweder mit Send. aber das ist unschön
    Mit Controlsend funktioniert das nur, wenn ich im Befehl Controlsend den Namen des Fenster nicht angebe dafür aber die controlID wobei die controlID bei jeder Webanwendung gleich ist.
    Sollte warum auch immer 2 Scripte gleichzeitig versuchen eine Variable einzutragen, könnte ich mir vorstellen das das in die Hose geht, weil eben das Fenster nicht explizit angegebn ist sei es über den Fenster- Titel oder das Handle
    Mit dem Fenster Titel geht es nicht
    Und mit dem Handle komme ich nocht nicht zurecht den richtig auszulesen

    Ich muß es aber Browser unabhängig machen.

    ControlSend ( "title", "text", controlID, "string" [, flag = 0] )
    ControlSend ("Anmeldung","","",$C1) - funktioniert so nicht nicht
    ControlSend ("","","[CLASS:Internet Explorer_Server; INSTANCE:1]",$C1) - funktioniert so, aber leider ohne Fenstername