Frage zu ShellExecute

  • Ich benutze ShellExecute in meinem Script. Bei der dritten Variable in dem Befehl fragt er ja das Arbeitsverzeichnis ab, wenn ich einen leeren String "" mache, heißt das ja er nimmt das aktuelle Arbeitsverzeichnis, aber was ist das aktuelle???
    Ich gebe ja schon in der ersten Variable das Verzeichnis mit an. Wenn ich nur "" heißt er ignoriert dann die variable und springt weiter? Das Problem ist, ich will nur die erste Variable und die letzte verwenden und muss ja bei den anderen zwingend was angeben.

    [autoit]

    ShellExecute("file:///D:/Programme/Neuer Ordner", "", "", "open", @SW_MINIMIZE)

    [/autoit]

    Edit:
    Nochmal zur Veranschaulichung was ich vor hab. Ich möchte einen vorher geöffneten Ordner mit ShellExecute, danach minimieren und nicht erst active werden lassen. So funktioniert es ja, nur ich versteh nicht, was das aktuelle Arbeitsverzeichnis ist.

    Einmal editiert, zuletzt von m-obi (9. Februar 2009 um 15:49)

    • Offizieller Beitrag

    Normalerweise führt man mit ShellExecute eine Datei aus.
    Der erste Parameter kennzeichnet dabei diese Datei, der zweite Parameter evtl. Übergabeparameter, der Dritte das Arbeitsverzeichnis (wo diese Datei zu finden ist). Rest kennst Du ja.

    Beispiel:

    [autoit]

    ShellExecute('AutoIt3.chm', '', 'C:\Programme\AutoIt3\', 'open', @SW_MINIMIZE)

    [/autoit]
  • das Arbeitsverzeichnis gibt NICHT an, wo eine Datei zu finden ist! Das Arbeitsverzeichnis gibt an, welches Verzeichnis das gestartete Programm als Arbeitsverzeichnis bekommt. (das Programm muss keinen Pfad angeben, wenn es eine Datei im Arbeitsverzeichnis öffnen will)
    Im ShellExecute muss aber der volle Pfad zur Datei angegeben werden, damit Windows die Datei finden und das dazugehörige Programm starten kann.
    (höchstes, die Datei ist im Arbeitsverzeichnis deines AutoIt-Skripts, das man mit @WorkingDir auslesen und mit FileChangeDir() setzen kann.)

  • Jedes Programm hat einen Pfad, in dem es Dateien aufrufen kann, ohne den Pfad angeben zu müssen. Oft stimmt er mit dem Exe-Pfad überein.
    z.B.:
    C:\Autoit\Autoit.exe -> WorkingDir: C:\AutoIt\Autoit.exe

    Jetzt kann man innerhalb alle Dateien innerhalb von C:\AutoIt\ aufrufen, ohne C:\AutoIt\ davor zu setzen.
    Bsp: C:\AutoIt\test.txt -> einfach test.txt

    Diesen Pfad kann man bei ShellExecute mit angeben, um einen andern Pfad festzulegen, den das gestartete Programm verwenden soll.