Klassichen OpenDialog ansteuern?

  • Hallo,

    ich bin neu beim Thema AUTOIT und wollte mal fragen, wie ich ein Programm, das einen solchen OpenFile-Dialog hat, am besten ansteuern kann? Habe den Pfad und Dateinamen vorliegen und möchte das File nun im Programm öffnen lassen. Außerdem würde ich gerne wissen wie ich anhand von einem Tool die Namen von Buttons bestimmen kann, weil AUTOIT Window Info zeigt mir nix zu einigen buttons an und über Koordinaten wollte ich ungern arbeiten.

    Gruß kami

  • Hi,

    nee das meinte ich so nicht. Ich steuere mit AUTOIT Scripten andere Programme und eines dieser Programme hat so einen OpenFileDialog. Den möchte ich gerne ansteuern.

    Gruß kami

  • Hi okay,

    wie finde ich die ID den sicher raus? weil AUTOIT liefert die nicht immer

  • So?

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>

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

    If Not @Compiled Then
    MsgBox(16, "Please compile", "Script can only run when compiled.")
    Exit
    EndIf

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

    If $CmdLine[0] = 0 Then
    Run(@AutoItExe & " '" & @ScriptName & "' param")
    Local $Path = _WinAPI_GetOpenFileName("My Open File Dialog", "All files (*.*)", ".", "", "", 2, 512, 0)
    If $Path[2] <> "" Then MsgBox(0, "Selected", FileGetLongName($Path[1] & "\" & $Path[2]))
    Exit
    EndIf

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

    _ChoosePath("My Open File Dialog", "", @ScriptFullPath)

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

    Func _ChoosePath($sTitle, $sText, $sPath)
    WinWait($sTitle, $sText)

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

    Local $aDrive = StringSplit($sPath, "\")

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

    ControlSend($sTitle, $sText, "ComboBox2", $aDrive[1])

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

    For $i = 2 To $aDrive[0] - 1
    ControlFocus($sTitle, $sText, "ListBox2")
    ControlSend($sTitle, $sText, "ListBox2", $aDrive[$i] & "{ENTER}{LEFT}")
    Next

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

    ControlFocus($sTitle, $sText, "ListBox2")
    ControlFocus($sTitle, $sText, "ListBox1")
    ControlSend($sTitle, $sText, "ListBox1", $aDrive[$aDrive[0]])
    Sleep(500) ;wait for listbox animation
    ControlClick($sTitle, $sText, "Button1")
    EndFunc ;==>_ChoosePath

    [/autoit]

    Edit: Wartezeit eingebaut

  • Eigentlich müsste der Window Info die alle lesen können, so ist es jedenfalls bei mir (Win Vista).

  • Hey,

    also ich fange das Thema nochmal an. Wie kann ich so einen OpenDialog steuern? Also das ich auf eine vorhandene Anwendung zu greife und dem sage, welche Datei er öffnen soll? Also das Programm soll gesteuert werden?

    Wie geht das?

    Vielen Dank.

    Gruß kami83

  • Davon ab gibt es bei den meisten Programmen geschicktere Möglichkeiten um eine Datei zu öffnen. Mal versucht das Programm mit Kommandozeilenparametern zu starten?

    Die meisten Programme unterstützen zumindestens das Datei öffnen per cmdline Parameter:

    [autoit]


    $pathtofile = "C:\test.datei"
    run('"C:\test\testprogramm.exe" "' & $pathtofile & '"')

    [/autoit]

    Wirklich helfen kann man dir btw auch nicht solange du weder den Programmnamen nennst, deine bisherigen Versuche postest, noch weitergehende Infos wie z.B. das Ergebnis von au3info lieferst.

  • Hi,

    erstmal sorry das ich mich nach so langer Zeit erst wieder melde.

    Das Thema ist mir irgendwie untergegangen. Also das mit dem RUN hat geklappt so kriege ich die Files einfach geöffnet. Aber ich habe noch folgendes Problem. Ich habe zwar die richtigen Dateinamen aber ich habe sie nur im alten Format:

    Kopie von S19.HED ist KOPIEV~1.HED

    Das heißt, wie kann ich die Dateinamen umkonvertieren?

    Vielen Dank.

    Gruß kami