Alternative zu "Sleep"

  • Gesucht wird ein Befehl, der AutoIt nach Zeile 3 pausiert, bis "WhatsAppSetup.exe" vollständig gestartet ist und dann erst die neue Verknüpfung "WhatsApp.lnk" auf dem Desktop löscht!
    Das mit dem "Sleep(10000)" ist eine unschöne Lösung meiner Meinung nach.

    Code
    FileDelete("C:\Users\stefa\Downloads\WhatsAppSetup*.exe")
    InetGet("https://web.whatsapp.com/desktop/windows/release/x64/WhatsAppSetup.exe", "C:\Users\stefa\Downloads\WhatsAppSetup.exe")
    ShellExecute("C:\Users\stefa\Downloads\WhatsAppSetup.exe")
    Sleep(10000)
    FileDelete("C:\Users\stefa\Desktop\WhatsApp.lnk")
    
    Exit
  • Schau dir das mal an: https://www.autoitscript.com/autoit3/docs/f…hellExecute.htm

    Du bekommst die PID zurück, mit der prüfst du in einer Schleife ob der Prozess noch läuft (https://www.autoitscript.com/autoit3/docs/f…ocessExists.htm) und wenn nicht -> Schleife Beenden (https://www.autoitscript.com/autoit3/docs/keywords/ExitLoop.htm) und den Link löschen.

    Oder du wartest bis der Link erstellt wurde (https://www.autoitscript.com/autoit3/docs/f…/FileExists.htm) und löscht ihn dann...

    Es gibt also viele Wege zum Erfolg.

  • nachdem eine Setup.exe aufgerufen wird, gehe ich davon aus, dass auf deren Beendigung gewartet werden soll.

    Dazu würde ich einfach

    Code
    ShellExecuteWait("C:\Users\stefa\Downloads\WhatsAppSetup.exe")

    verwenden

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Der Zusammenhang ist ganz einfach

    1. Du führst mit ShellExecute und ShellExecuteWait 2x das Setup aus, d.h. eins von beiden kannst Du Dir sparen.

    2. Das Setup ruft dann über die .lnk-Datei vom Desktop das Programm auf C:\Users\<User>\AppData\Local\WhatsApp\WhatsApp.exe (<User> ist dabei Dein Benutzername)

    Du musst warten bis dieses Programm beendet ist, dann erst kannst Du die .lnk-Datei auch wieder löschen.

  • Danke, aber ich lade die "WhatsAppSetup.exe" doch in "D:\Downloads\WhatsAppSetup.exe" runter und nicht in "C:\Users\<User>\AppData\Local\WhatsApp\WhatsApp.exe"?!

    Bin kein Programmierer - stehe auf dem Schlauch!

  • Wie lautet der Platzhalter für "stefa", wenn ich stattdessen den angemeldeten Nutzer nehmen möchte?

    @Username

    Edit : ID des gerade angemeldeten Nutzers (entspricht der Systemvariable %USERNAME%).

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (2. November 2021 um 21:16) aus folgendem Grund: erweitert

  • Lade mal die Datei manuell herunter. Starte die Setup-Datei und verbinde Dein Handy mit dem Computer.

    Dann hast Du die .lnk-Datei auf Deinem Desktop. Klick mit der rechten Maustaste drauf und gehe auf Eigenschaften. Da siehst Du dann den Dateipfad.

    Die Setup-Datei (die Du herunterlädst) installiert die Datei in den Pfad, den ich beschrieben haben (darum ja Setup) und startet diese danach.

    Langer Rede kurzer Sinn: Möchtest Du ein fertiges Script oder Hilfe, um es selbst zu erstellen? Hier bei Hilfe und Unterstützung gibt es normalerweise Hilfe zur Selbsthilfe, ich kann Dir aber auch ein ganzes Script posten, wenn Du willst.

  • Danke, möchte es selber machen und nachhaltig verstehen!

    In Zeile 3 wird die neu heruntergeladene Datei "C:\Users\stefa\Downloads\WhatsAppSetup.exe" gestartet und erstellt gleichzeitig eine neue Datei "C:\Users\stefa\AppData\Local\WhatsApp\WhatsApp.exe", die in Zeile 4 ausgeführt wird, richtig?

    Wird das aufpoppende WhatsApp-Fenster letztendlich aus Zeile 3 oder Zeile 4 heraus gestartet?

    Code
    FileDelete("C:\Users\stefa\Downloads\WhatsAppSetup*.exe")
    InetGet("https://web.whatsapp.com/desktop/windows/release/x64/WhatsAppSetup.exe", "C:\Users\stefa\Downloads\WhatsAppSetup.exe")
    ShellExecuteWait("C:\Users\stefa\Downloads\WhatsAppSetup.exe")
    ShellExecuteWait("C:\Users\stefa\AppData\Local\WhatsApp\WhatsApp.exe")
    FileDelete("C:\Users\stefa\Desktop\WhatsApp.lnk")
    
    Exit
  • Kennst Du ConsoleWrite? Füge diese hinzu, so dass Du immer sehen kannst, was passiert

    Mein Vorschlag:


    Hoffe, es hilft. Wenn nicht, dann einfach weiter fragen :)

  • Also...

    normalerweise wird hier ein Problem geschildert das man selber nicht lösen kann.

    Du hast zu Beginn deines Posts den Fehler aller Fehler gemacht. Du hast dir selbst eine Lösung ausgedacht und suchst nach einer Umsetzung dafür.

    ABER ^^

    Deine Lösung ist einfach nicht gut. Daher sind auch die Lösungsansätze die wir liefern nicht sonderlich gut.

    Ich unterstelle jetzt mal was du erreichen möchtest:

    - Download von WhatsAppSetup.exe

    - Start der Installation von WhatsApp Setup.exe

    - Nach Installation --> "aufräumen"

    Den Doanload hast du ja schon hinbekommen, sehr gut ;)

    Mit der Installation ist das so eine Sache. I.d.R. haben diese Installer-Programme je nachdem mit welchem Installer diese erstellt wurden, verschiedene "Switches" mit denen die Installation gesteuert werden kann. Unter anderem auch ein Schalter für die "leise" Installation. Diese installiert das Programm mit den "default" Einstallungen ohne Anzeige einer GUI und ohne Usereingaben.

    In diesem Fall würde der Schalter vermutlich folgendermaßen aussehen: "/S"

    Als Codezeile:

    Code
    ShellExecuteWait("C:\Users\stefa\Downloads\WhatsAppSetup.exe", "/S")

    Wenn du die Parametrierung eines Befehls in autoit sehen willst, dann markieren den gesamten Befehl und drücke F1:

    Function ShellExecuteWait

    ShellExecuteWait ( "filename" [, "parameters" [, "workingdir" [, "verb" [, showflag]]]] )Mit dieser Codezeile wird das Installationsprogramm gestartet, angewiesen die Installation bis zum Ende ohne Usereingaben auszuführen (/S)und zu warten, bis dieses Programm fertig ist (Process beendet)Was du danch mit den "Überresten" machst ist dann ein eigenes Thema ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Entschuldigung, wo finde ich das?

    Bin neu hier.

    Moin smu.
    smudo oder nicht smudo, das ist hier die Frage. Okay, SPASS.

    Als ich mit AutoIt begann, war mein erstes Handeln, einmal mir einen großen Überblick der Hilfedatei zu verschaffen. Dann hatte ich ein erstes Problem, habe mit den Schlagwörtern die mir im Kopf waren, in der Hilfedatei nach Lösungen zu kommen. Einige konnte ich lösen, andere bekam ich hier sehr gute und "liebe" Hilfe.

    Was ich damit sagen möchte ist, Du hast schon den Hinweis bekommen, das es die Hilfe gibt und das Du für Dein Problem dort mal bei Makros schauen darfst, da dir dort die Hilfe geboten wird bzw. Ansätze dafür. Ich sitze heute noch oft länger in der Hilfedatei fest und sucher und suche, aber es braucht immer wieder Geduld. Gerade als Neuling" ist es für viele nicht leicht mit etwas Neuem klar zu kommen. Egal ob es EDV / IT ist oder sonst etwas. Oder man versucht ohne die schriftliche Hilfe klar zu kommen. Ist doch wie bei einem neuen Gerät, das man das erste mal aufbaut und einstellt (z. B. TV). Wozu eine Gebrauchsanweisung lesen, das muss auch so klappen, ansonsten wird der technische Dienst des Herrstellers kontaktiert. Und wenn dann alles läuft hat man dann die Zeit die Gebrauchsanweisung zu lesen.

    Und gaaaanz wichtig: "Lächeln & Geduld". ;) Die Ungeduld parkt bei mir, das Lächel können wir uns teilen. :rofl:

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Wird das aufpoppende WhatsApp-Fenster letztendlich aus Zeile 3 oder Zeile 4 heraus gestartet?

    Das ConsoleWrite von BananaJoe ist auf jeden Fall schon mal eine gute Idee...

    Damit bekommst du aber keine Info darüber, wem das Fenster gehört oder von wem der Proccess gestart wurde ... dafür muss man schon etwas mehr tun.

    Hier mal ein kleines Bsp., wie ich mir solche Infos anzeigen lasse, wenn ich ein neues Script schreibe: