Text parsen und Text-Position ermitteln

  • Hallo,

    ich möchte die Einrichtung von TrueCrypt automatisieren.
    Bisher bin ich auch gut vorangekommen mit den Control-Tasten (Tab, Alt+Y, Alt+W usw).

    Nun bin ich bei folgendem Punkt:

    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/autoitttryuwn3vmz1.jpg]


    Und hier komme ich leider mit den Control-Tasten nicht ans "Nein" ran.

    Mit folgendem Code kann ich den Text nach "Nein" parsen:

    Code
    WinActivate("Assistent zum Erstellen eines TrueCrypt-Volumen","")
    $Text=WinGetText("Assistent zum Erstellen eines TrueCrypt-Volumen","")
    $Value=StringSplit($Text,@CRLF)
    For $i=1 To $Value[0]
    	If StringRegExp($Value[$i],"Nein") Then
    		msgBox(0,"",$Value[$i])
    	EndIf
    Next

    Jetzt fehlt nur noch eine Funktion, die in dieser For-Schleife die Position des gefundenen Strings ermittelt und dort den Mausklick macht. Ich hoffe ich konnte mich verständlich ausdrücken. Oder gibt es vielleicht eine bessere Methode? Nutze AutoIt zum 1.Mal. :S

    Danke und Gruß

    flex10

    Einmal editiert, zuletzt von flex10 (5. Oktober 2012 um 16:37)

  • Versuche mit dem AutoIt-Window-Info Tool (in SciTE mit Strg+F6 öffnen) die ID / Class der Radio-Button auszulesen.
    Mit ControlCommand kannst du diese direkt ansteuern.

    Das Problem ist, dass die Buttons keine eigene Class haben und sich nicht direkt ansteuern lassen (siehe Bild):


    [Blockierte Grafik: http://img5.fotos-hochladen.net/uploads/autoit28ei26ypjha.jpg]


    Daher arbeite ich schon mit WinGetText, um irgendwie die Buttons anzusteuern. Es reicht ja nämlich auch das "Nein" anzuklicken statt genau den Button selbst.

    Du kannst TrueCrypt komplett über Kommandozeile steuern: http://www.truecrypt.org/docs/?s=command-line-usage

    Die Kommandozeilen-Befehle sind nur für die Installation gedacht. Da bin ich schon durch.
    Ich arbeite nun mit "TrueCrypt Format.exe /n" und muss die gesamte Festplatte verschlüsseln. Hierfür gibts leider keine CLI.

    • Offizieller Beitrag

    Lassen sich die Radios evtl. per Tastatur anwählen?
    z.B. mit TAB in den inneren Bereich wechseln, dann mit ALT+N das Nein wählen? Oder per Pfeiltastatur auf das Radio gelangen und dann mit SPACE selektieren?
    Probiere mal rum. Lösungen mit Send() sind zwar nicht unbedingt das gelbe vom Ei, aber wenn nichts anderes funktioniert bleibt oft nur diese Krücke. :S

  • genau das ist ja das Blöde. Mit den Pfeiltasten, Tabs usw. komm ich an die Radios nicht ran.
    Er wechselt nur zwischen den unteren 4 Buttons.

    Jetzt habe ich mal bei der Window Info unter Options dieses Spy++ abgeschaltet und sehe nun etwas mehr Infos.
    Die Buttons haben anscheinend die ID's 5085 (Text: Ja) und 5087 (Text: Nein).

    $handle = ControlGetHandle("Assistent zum Erstellen eines TrueCrypt-Volumen","",5087)
    Msgbox(0,"123","Handle:" & $handle)

    --> Liefert mir auch die korrekte Handle-ID.


    Allerdings kann ich die Radios weder mit ControlClick, noch mit ControlCommand direkt ansprechen. :(

    ControlClick("Assistent zum Erstellen eines TrueCrypt-Volumen","",5087)
    ControlClick("Assistent zum Erstellen eines TrueCrypt-Volumen","Nein",5087)
    ControlCommand("Assistent zum Erstellen eines TrueCrypt-Volumen","",5087,"Check","")

  • hat keiner noch eine Idee? :(

    Text parsen und danach die Testposition ermitteln?

    Oder mittels MouseMove zum "Nein" Button zu gehen, aber so, dass es auch bei unterschiedlichen Auflösungen funktioniert.

  • schon gut, habs selber gelöst mit @DesktopWidth und @DesktopHeight.

    Code
    [...]
    MouseClick("Left",@DesktopWidth/2 - 50, @DesktopHeight/2 - 105,1,10)
    Sleep(400)
    ControlSend("Assistent zum Erstellen eines TrueCrypt-Volumen","","[CLASS:#32770; INSTANCE:1]","!w")
    Sleep(400)
    MouseClick("Left",@DesktopWidth/2 - 50, @DesktopHeight/2 - 121,1,10)
    Sleep(400)
    [...]

    Danke an alle die helfen wollten. Ihr könnt das Thema schließen.