Mit Autoit auf Programm zugreifen ohne cmd.exe

  • Also, ich habe ja vor einen Flasher für Handy zuschreiben, also quasi nur die Gui für die Befehle die man sonst in der Konsole eingibt, dafür gibt es ein programm, es nennt sich fastboot.exe, und diese datei kann man dann mit fastboot -w oder fastboot flash system system.img oder ähnlichem per konsole ansteuern. Siehe auch hier.

    Nun möchte ich die cmd.exe quasi auslassen und die fastboot.exe dann mit variablen ansteuern und befehle ausführen. das dann quasi direkt $fbort flash system $sysort angegeben wird und Autoit dann C:\Android\Fastboot.exe mit flash system c:\Android\Imgs\system.img ansteuert. Ich hoffe ihr versteht was ich ausdrücken will, find es ziemlich schwer zu beschreiben.

    MfG

    Einmal editiert, zuletzt von michabilbang.de (3. April 2011 um 22:49)

  • Bekomme die Meldung: "Dieser Verbindung wird nicht vertraut".

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Ich habe mir nun den Umweg überlegt, alles in eine txt zuschreiben, die in bat umzubennen und auszuführen, bin grad ein bissel am rumarbeiten und am rumspielen, wenn jemand mir weiterhin helfen möchte mit dem weg ohne konsole und alles dann wäre ich sehr dankbar.

  • Also irgendwie versteh ich dein Problem nicht so ganz. Schonmal run oder runwait in der Hilfe angeschaut? Damit kannst du doch dann problemlos deine fastboot.exe mit Parametern aufrufen wie du es auch per Kommandozeile machen würdest. Wenn dich das cmd Fenster stört benutz eben @SW_HIDE wie in der Hilfe beschrieben. Dadurch wird die Datei dann unsichtbar im Hintergrund ausgeführt.

    Hier mal ein ungetestetes Beispiel anhand deiner Angaben:

    [autoit]


    $fastboot = "C:\Android\Fastboot.exe"
    $parameter = "flash system"
    $imagefile = "c:\Android\Imgs\system.img"

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

    RunWait(@ComSpec & " /c " & '"' & $fastboot & '" ' & $parameter & ' "' & $imagefile & '"')
    msgbox(0,"Fertig","Flashvorgang abgeschlossen")

    [/autoit]

    3 Mal editiert, zuletzt von misterspeed (3. April 2011 um 14:29)

  • Ah Vielen Dank für das BSP, denke so sollte ich es jetzt schaffen, Vielen Dank Schonmal.

    Ist vllt eine dumme Frage, aber wofür sind immer die & '"' und & ' ' &

    Einmal editiert, zuletzt von michabilbang.de (3. April 2011 um 14:12)

  • Mit & kombiniert man Teilstrings. Also:

    [autoit]


    $string1 = "ab"
    $string2= "c"
    $string = $string1 & $string2 ; ---> "abc"
    msgbox(0,"meine strings",$string)

    [/autoit]

    Bei Kommandozeilenaufrufen sollte man immer Pfade mit Anführungszeichen umschliessen. Da in der Autoitsyntax aber Anführungszeichen auch Strings markieren muss das Alternativ Zeichen benutzt werden wenn das Anführungszeichen ebenfalls Teil des Strings sein soll.

    [autoit]


    $string1 = "C:\"
    $string2 = '"C:\"'
    msgbox(0,"meine strings",$string1 & @crlf & $string2)

    [/autoit]

    Du siehst den Unterschied? Bei Pfaden ist das wichtig, wenn Leerzeichen im Pfad selbst vorkommen. Ausserdem musst du natürlich auch die Syntax des Kommandozeilentools einhalten und Leerzeichen zwischen den Parametern setzen. Deshalb findest du in meinem Beispiel zwischen den Variablen auch Strings die nur ein Leerzeichen enthalten.

    PS: Ich hatte im Beispiel ein & am Ende vergessen ist nun editiert

  • Achso, also muss ich, da der Pfad mit "Ort" angegeben wird, die $var eben in diese "" packen, da "$var" aber den string $var ausgeben würde muss ich ' ' drum packen?
    So in etwa habe ich das verstande, korrigiere mich wenn ich falsch liege. Also einfach, damit " " mit geschrieben werden noch ' ' drum herrum packen.

    [autoit]

    $fastboot = '"C:\Android\Fastboot.exe" '
    $parameter = "flash system "
    $imagefile = ' "c:\Android\Imgs\system.img"'

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

    RunWait(@ComSpec & " /c " & $fastboot & $parameter & $imagefile)
    msgbox(0,"Fertig","Flashvorgang abgeschlossen")

    [/autoit]

    Also so würde quasi das Gleiche wie in deinem Beispiel sein oder?

    3 Mal editiert, zuletzt von michabilbang.de (3. April 2011 um 14:38)

  • Fast, du hast nun zwischen $parameter und $imagefile 2 Leerzeichen. Aber prinzipiell kannst du das auch so machen das ist korrekt. Nur wenn ich mir deine GUI aus dem anderen Thread anschaue ist es sinnvoller die Formatierung erst im runbefehl zumachen, da du ja die Pfade per openfile bekommst und diese Strings ohne Anführungszeichen und Zusatzleerzeichen daherkommen.

    Zum testen rate ich dir im übrigen zu einer vorherigen Ausgabe des Befehls mit consolewrite. Es schleichen sich da sehr gerne Fehler ein.


    Beispiel:

    [autoit]


    $fastboot = "C:\Android\Fastboot.exe"
    $parameter = "flash system"
    $imagefile = "c:\Android\Imgs\system.img"

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

    $cmd = '"' & $fastboot & '" ' & $parameter & ' "' & $imagefile & '"'
    consolewrite(@crlf & $cmd & @crlf)
    ; diese Ausgabe kannst du dann nochmal kontrollieren und evtl auch zuvor noch per Hand in der Kommandozeile ausführen.
    ; Vorteil ist dass du Fehlermeldungen lesen kannst und den Befehl nochmals überarbeiten kannst
    ; wenn alles passt den run befehl auskommentieren

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

    ;RunWait(@ComSpec & " /c " & $cmd)

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Ja, hatte mich dazu entschieden es wirklich erst in dem Runwait befehl zu machen, deine Beispiel verarbeitung galt für mich auch mehr dem Verständniss, habe das Programm jetzt soweit fertig, nun muss ich testen ob alles klappt, dafür ist dein consolewrite befehl genau das richtige, danke.
    :thumbup:

    Danke warst mir echt eine große Hilfe.