Arbeitsverzeichnis beim Programmablauf und Kontextmenü – au3 Datei abspielen

  • Hallo Freunde der automatisierten Schritte,


    ich möchte eine au3 Datei über das Kontextmenü des Explorers abspielen. Hierbei gibt es zwei Probleme.

    (1)

    Kontextmenü Explorer auf eine au3 Datei - öffnen mit – Autoit (AutoIt3_x64.exe)

    Dann wird als Arbeitsverzeichnis das Verzeichnis der AutoIt3_x64.exe genommen und nicht das Arbeitsverzeichnis des Scripts. Das merkt man sehr gut daran, dass DLLs oder andere Dateien, die im Verzeichnis der au3 Datei liegen, bei der Skript Ausführung nicht berücksichtigt werden.

    Startet man das Script über F5 in Scite, dann läuft es perfekt.

    Wie kann ich im Skript angeben, das als Arbeitsverzeichnis jenes Verzeichnis genommen wird, in dem die au3 Datei liegt?
    Absolute Pfade (c:\test\test.bmp) möchte ich nicht nutzen, es sollen nur relative Pfade (.\Bilder\test.bmp) verwendet werden.

    Gibt es eine globale Einstellung dafür, dass bei Verwendung der AutoIt3_x64.exe das Arbeitsverzeichnis immer das Verzeichnis des Skriptes ist?


    (2)


    Ich habe mehrere Themenbeiträge hier im Forum gelesen, in dem es darum ging, dass eine au3 Datei über den Kontextmenü-Befehl "run" ausgeführt wird. ( und auch das lange Thema mit Lösungsvorschlägen wie Neuinstallation etc. )

    Obwohl ich die aktuelle Version von AutoIt erneut nach einer Deinstallation installiert habe, erscheinen bei mir keine Kontextmenü-Einträge unter Windows 8.1/64 für Autoit in der Form, dass ich beim Rechtsklick auf eine au3 Datei diese ausführen kann.


    Ich kann nur über das Kontextmenü „öffnen mit“ gehen, in welches ich per Hand den Eintrag für die Datei AutoIt3_x64.exe gelegt habe.


    In der Registry sind die Einträge für open, run etc. enthalten.

    Beispiel:

    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AutoIt3Script\Shell\RunX64\Command

    "D:\! Autoit !\! Autoit 2015\AutoIt3_x64.exe" "%1" %*


    Dennoch erscheinen sie nicht im Kontextmenü des Explorers. Andere Einträge erscheinen problemlos - wie Winrar etc. - gleiche Syntax der Verzeichnisbezeichnung.


    Auch die anderen Autoit-Befehle fehlen im Kontextmenü, wie zum Beispiel Compile, Edit, Open, Runx64, obwohl sie wie ebg. in der Registry vorhanden sind.


    Was kann ich tun, damit diese Einträge im Kontextmenü des Explorers vorhanden sind? Woran kann es liegen, dass diese Befehle trotz funktionierender Installation und der Registryeinträge nicht verfügbar sind?


    Am liebsten wäre mir ein einfacher – nicht verschachtelter Eintrag im Kontextmenü des Explorers – unter der Bezeichnung „wiedergeben au3“. Alle meine Versuche in dieser Richtung schlugen fehl. Könnt ihr mir eine REG.Datei geben, die diesen Eintrag in der Registry hinzufügt, sodass der Befehl im Kontextmenü des Explorer vorhanden ist?

    Viele Grüße
    AutoMit

    • Offizieller Beitrag

    Dann wird als Arbeitsverzeichnis das Verzeichnis der AutoIt3_x64.exe genommen und nicht das Arbeitsverzeichnis des Scripts

    Ja klar, du führst ja auch die AutoIt3_x64.exe aus, dein Skript wird ja nur zur Interpretation als Parameter dorthin übergeben.
    Um im Skriptverzeichnis auszuführen mußt du dir einen eigenen Aufruf erstellen. Etwa so: Run("Full_Path_AutoIt.exe 'Full_Path_Script.au3'", "Script_Dir")
    Du brauchst also ein kompiliertes Skript, welches vom auszuführenden Skript den Pfad ausliest, den Kommandostring für Run erstellt und Run startet.

    "D:\! Autoit !\! Autoit 2015\AutoIt3_x64.exe" "%1" %*

    Seltsame Syntax. Bei mir sieht das so aus: "C:\Program Files (x86)\AutoIt3\AutoIt3_x64.exe" "%1" %*
    Ich hab mal zum Abgleich den Registry-Zweig angehängt. Bei mir sind alle Kontextmenüeinträge vorhanden.

    EDIT:
    Zum Auslesen des markierten Eintrags im Explorer kannst du das folgende Skript nutzen:

  • zu (1)

    "Du brauchst also ein kompiliertes Skript, welches vom auszuführenden Skript den Pfad ausliest, den Kommandostring für Run erstellt und Run startet."

    Ich hatte auf sowas gehofft wie:

    #Arbeitsverzeichnis =
    (als Zeile im Script :-))

    Dann kann ich nur hoffen, dass (2) gelöst werden kann.

    zu (2)

    Vielen Dank. Die Syntax erklärt sich daraus, dass ich das Programm installiert habe nach: "D:\! Autoit !\! Autoit 2015\".

    (wie erwähnt – diese Verzeichnisbenennung führt nicht zu Problemen, da ich diese unter anderem auch bei WinRar dem Grunde nach benutzt habe)

    Der Rest sieht für mich auf den ersten Blick identisch aus - richtig?

    mein Eintrag
    AutoIt3_x64.exe" "%1" %*

    Dein Eintrag
    AutoIt3_x64.exe" "%1" %*

  • Danke Oscar, das ist eine interessante Anregung.

    Das Problem bei dieser Lösung liegt darin, dass bestimmte Dateien (wenn ich das richtig verstanden habe) gar nicht im Skript vorkommen, sondern von dem Arbeitsverzeichnis ausgehen.


    Zum Beispiel die im Arbeitsverzeichnis liegende ImageSearchDLL.dll.


    Daher dachte ich an einen Eintrag im Skript, welches beim Start darauf verweist, welches das Arbeitsverzeichnis ist, in dem dann diese Datei gesucht wird.


    Gibt es dafür eine Lösung, außer die au3 Datei zu kompilieren?

    Einmal editiert, zuletzt von AutoMit (26. Oktober 2015 um 13:17)