ControlListview --> FindItem liefert nicht den korrekten Index zurück

  • Moin, ich verzweifle bald. Hab folgendes Problem:

    Ich möchte Software automatisch deinstallieren und dazu ein Item aus der SysListView 321 per Stringvergleich auswählen und dieses selektieren.

    Hier der Code:

    [autoit]

    ;ASUS WebStorage auswählen und deinstallieren
    $a=ControlListView("Programme und Funktionen", "1", "SysListView321", "FindItem", "Adobe AIR")
    ControlListView("Programme und Funktionen","","SysListView321","SelectClear")
    ControlListView("Programme und Funktionen","","SysListView321","Select", &a)
    WinWait("Programme und Funktionen")
    ControlSend("Programme und Funktionen", "", "", "!d")

    [/autoit]

    Funktioniert prima, nur ist meine Variable immer 0, es wird also immer das erste Item ausgewählt. Fehler wäre -1, aber das passiert nicht, sondern immer 0.

    Was mache ich falsch?

    Einmal editiert, zuletzt von ExSan (3. Dezember 2012 um 16:37)

  • Du hast auf jeden Fall einen Tippfehler im Sript.

    [autoit]

    ControlListView("Programme und Funktionen","","SysListView321","Select", &a)

    [/autoit]

    muss zu geändert werden

    [autoit]

    ControlListView("Programme und Funktionen","","SysListView321","Select", $a)

    [/autoit]

    Du kannst dir auch mit

    [autoit]

    ConsoleWrite($a &@CRLF)

    [/autoit]

    den Inhalt von $a ausgeben lassen um zu sehen ob Zeile 2 funktioniert. Die Ausgabe erfolgt in derScitekonsole.

    Zitat von Hilfe zu ControlListView

    Bemerkungen

    Manche Befehle funktionieren nicht, wenn ein 32-bit AutoIt Prozess verwendet wird, um von einem 64-Bit Prozess zu lesen. Genauso können Befehle nicht funktionieren, wenn ein 64-bit AutoIt Prozess verwendet wird, um von einem 32-bit Prozess zu lesen.

    mfg autoBert

  • Vielen Dank für die Hilfe, habe den Schreibfehler behoben, der war´s aber leider nicht. das mit 64 und 32 bit hatte ich schon in allen variationen durchprobiert, geht nicht.

    Hab mir $a ausgeben lassen, es ist immer noch 0.

    Ich kann auch "Kuchen" in den String schreiben und krieg immer noch die 0 und nicht -1

  • Ein findiger Forumuser hat mir geholfen. Mein Code sieht zwar jetzt ulkig aus:


    [autoit]

    ;Deinstallation aufrufen
    ShellExecute("control", "appwiz.cpl")
    WinWait("Programme und Funktionen")
    WinActivate("Programme und Funktionen")
    ;Adobe Air auswählen und deinstallieren
    Send("{TAB 9}")
    Send("a")
    Send("d")
    Send("o")
    Send("b")
    Send("e")
    send("{Space}")
    Send("a")
    Send("i")
    Send("r")
    WinWait("Programme und Funktionen")
    ControlSend("Programme und Funktionen", "", "", "!d")

    [/autoit]

    Aber es funktioniert einwandfrei!!


    :thumbup: :thumbup:

  • Hast du dir schon einmal @Error ausgeben lassen z.B. so:

    [autoit]

    ;ASUS WebStorage auswählen und deinstallieren
    $a=ControlListView("Programme und Funktionen", "1", "SysListView321", "FindItem", "Adobe AIR")
    ConsoleWrite("$a & @TAB & @error & @CRLF)
    ControlListView("Programme und Funktionen","","SysListView321","SelectClear")
    ControlListView("Programme und Funktionen","","SysListView321","Select", $a)
    WinWait("Programme und Funktionen")
    ControlSend("Programme und Funktionen", "", "", "!d")

    [/autoit]

    Was wird dabei in der Konsole ausgegeben?

    mfg autoBert