Shellexecute und RUN unter Windows 7

  • Hallo zusammen,

    ich habe mit einem Script ein Problem, was eigentlich garkein Problem sein dürfte. Ich versteh es einfach nicht.
    Ich habe in meinem Script diesen Code, der zwar ausgeführt wird und mit auch 1 als Antwort sendet, aber es passiert nichts:

    [autoit]

    ShellExecute("C:\Temp\SPS.d3l")

    [/autoit]

    Zur Erklärung die Datei d3l ist ein Dateityp von einem Programm. Per Explorer mit einem Doppelklick funktioniert es. Auch unter Windows XP funktioniert es. Nur auf Windows 7 wird das Programm mit dieser Datei nicht geöffnet. Ich habe es auch schon mit dem RUN @ComSpec / c getestet, gleiches Phänomen.

    Ich habe auch schon versucht mir mit einer .bat oder .cmd zu helfen, die dann einfach diesen Dateityp öffnet. Auch hier das gleiche, der Aufruf von der Shell oder Doppelklick aus dem Explorer funktioniert, nur aus dem AutoIT Script nicht. Auch ein #RequireAdmin hat leider nicht geholfen. Ich steh total auf dem Schlauch, warum das unter Windows 7 nicht funktionieren möchte.

    Hat jemand von euch eine Idee wie ich diese "Problem" lösen kann ??

    Einmal editiert, zuletzt von CrazyER (1. August 2013 um 11:25)

  • Was passiert unter Windows 7, wenn Du eine solche Datei im Explorer doppelklickst?

  • Was ist der Rückgabewert und der Wert von @error von ShellExecute?
    Mit welcher AutoIt Version arbeitest Du?

  • Das einzige was mir dazu einfällt wäre:

    Wenn Du einen Doppelklick unter dem Windows-Explorer auf einem Win7-x64-System machst, wird die Anwendung aus dem x64-System (Explorer ist ja die x64-Variante) gestartet und wenn Du das aus AutoIt heraus startest, wird dein Script ggf. als 32bit-Version gestartet.

    Wenn dein System ein x64 ist, könnte man mal einen Test machen, indem man den Doppelklick aus einem 32bit Tool (z.B. Totalcommander 32bit) heraus anklickt, ob dies auch funktioniert. Ggf. lassen sich ja reine x64-Programme nicht aus einem 32bit-Autoit heraus starten !?

    Gruß
    Micha

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Error Level ist 1, also wurde Ordnungsgemäß ausgeführt und meine AutoIT Version ist v.3.3.8.1

    Aber der Hinweis Micha ist sehr gut. Das Programm, das geöffnet wird ist ein Programm das sehr System nach ist, also sich in die Tiefen des OS eingegraben hat. Und somit kann dem gut sein. Die Frage wäre dann, kann ich mit AutoIT den Explorer explizit als 32bit und 64bit ausführen lassen ??

    Aber ich hab die AutoIT Anwendung auch mal als x64 Anwendung kompiliert, das führt auch nicht zu Erfolg.

  • Ja, den Ordner und die Datei gibt es und ich kann Sie auch über den Explorer oder der Shell erfolgreich aufrufen. Und mit Windows XP PC funktioniert es auch wunderbar. Es liegt also nahe das es ein 64bit Problem ist.

  • Du könntest dein Script als x64 kompilieren (Aut2Exe / Compile for System : x64) und dann den ShellExecute-Befehl nochmal testen. Dann würde der Aufruf ja direkt aus einer x64-Anwendung erfolgen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Wie siehts mit folgenden Varianten aus:

    [autoit]

    Run("C:\ProgrammPfad\Programm.exe" & " " & "C:\Temp\SPS.d3l")
    ShellExecute("C:\ProgrammPfad\Programm.exe", "C:\Temp\SPS.d3l")
    Run("explorer.exe" & " " & "C:\Temp\SPS.d3l")
    ShellExecute("explorer.exe", "C:\Temp\SPS.d3l")

    [/autoit]

    Was passiert, wenn du folgendes genau so im Command Prompt startest bzw, wenn du die Zeile ins Adressfeld des Explorers (nicht IE) einfügst und <Enter> drückst?
    Nuja, das sollte gehn, ich würde es aber trotzdem mal durchführen :whistling:

    Code
    "C:\Temp\SPS.d3l"