Problem mit Array

  • Guten Abend AutoITler,

    es geht um folgendes. Ich möchte ein Datei-Öffnen-Dialog von einem externen Programm abfragen. Unzwar brauche ich den Inhalt von dem Editfeld "Dateiname" und, ich muss wissen ob dann "Öffnen" oder "Abbrechen" gedrückt wurde.
    Die ID's von den Buttons habe ich mit Window Info von AutoIT herausgefunden.
    Dazu habe ich mir folgenden Code überlegt (aber erstmal ohne das Editfeld):

    [autoit]

    While True
    If WinExists("Öffnen") Then
    $aCursorInfo = GUIGetCursorInfo("Öffnen")
    If $aCursorInfo[4] = 1 Then MsgBox(0, "Info", "Öffnen")
    If $aCursorInfo[4] = 2 Then MsgBox(0, "Info", "Abbrechen")
    EndIf
    WEnd

    [/autoit]

    Bei dem Code bekomm ich ne Fehlermeldung zu Zeile 4.
    Damit ihr wisst wie das aussieht hab ich noch ein Screenshot im Anhang.
    Woran könnte das liegen? Funktioniert GUIGetCursorInfo nur mit selbst erstellten GUI's via AutoIT?

    Einmal editiert, zuletzt von m-obi (21. Januar 2009 um 22:32)

  • Hab jetzt mal mit Handle, aber Problem immernoch.

    [autoit]


    While True
    If WinExists("Öffnen") Then
    $hOeffnen = WinGetHandle("Öffnen")
    $aCursorInfo = GUIGetCursorInfo($hOeffnen)
    If $aCursorInfo[4] = 1 Then MsgBox(0, "Info", "Öffnen")
    If $aCursorInfo[4] = 2 Then MsgBox(0, "Info", "Abbrechen")
    EndIf
    WEnd

    [/autoit]
    Code
    (5) : ==> Subscript used with non-Array variable.:
    If $aCursorInfo[4] = 1 Then MsgBox(0, "Info", "Öffnen")
    If $aCursorInfo^ ERROR
    • Offizieller Beitrag

    Probier mal mit Fehlerabfrage:

    Spoiler anzeigen
    [autoit]

    If WinExists("Öffnen") Then
    $hOeffnen = WinGetHandle("Öffnen")
    If Not IsHWnd($hOeffnen) Then Exit MsgBox(0, '', 'Kein Handle!')
    $aCursorInfo = GUIGetCursorInfo($hOeffnen)
    If Not IsArray($aCursorInfo) Then Exit MsgBox(0, '', 'Keine Cursor-Info!')
    If $aCursorInfo[4] = 1 Then MsgBox(0, "Info", "Öffnen")
    If $aCursorInfo[4] = 2 Then MsgBox(0, "Info", "Abbrechen")
    EndIf

    [/autoit]
  • Ok, es kam das Fenster "Keine Cursor-Info!". Also konnte er kein Array erstellen, aber ein Handle war schon da.

  • Habe hoffentlich das richtige gefunden --> ControlCommand.
    Aber irgendwie funzt das nicht.
    Habe es am Beispiel AutoIT getestet. Wenn man DAtei öffnen klickt kommt ja der Dialog und wenn man Abbrechen drückt soll eine MsgBox erscheinen.
    Aber nix passiert.

    [autoit]

    While True

    If ControlCommand("Open File", "", "[CLASS:Button; INSTANCE:3]", "IsChecked") = 1 Then MsgBox(0, "Info", "Abbrechen")

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

    WEnd

    [/autoit]
  • ich frage mich noch immer warum du nicht den workaround mit mousegetpos und _ispressed nimmst...

    Das ist zwar sicher nicht die beste Lösung aber im WindowMode noch sicherlich eine der praktikabelsten...

    Oder mal wieder ne Frage an die Cracks^^ Wie funktioniert das Au3WindowinfoTool, also wie kommt es an die Informationen etc heran? Über das Objekt?

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • kann mir denn jemand ein Beispiel geben mit MouseGetPos und _IsPressed anhand von dem Datei-Öffnen-Dialog von AutoIT?

    • Offizieller Beitrag

    FireFlyer wenn du wissen willst wie das Au3WindowinfoTool funtioniert , dann studiere mal die WinApi.au3 .Außerdem solltest du dich verdammt gut mit DLL-Strukturen auskenne.

    @m-obi warum machst du hier eigentlich den Spamer , warum kannst du nicht einfach deine vorhergehende Post editieren ?

  • weil editierte Posts nicht ganz oben im Forum stehen

    es tut mir ja leid :|

    Einmal editiert, zuletzt von m-obi (22. Januar 2009 um 21:08)