Verknüpfung erstellen "ausführen in"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Hi Community.

Ich habe mir ein Programm geschrieben dass vor dem Start eines Spieles einige optionen in der Registry ändert. Das funktioniert schon ganz wundertbar allerdings habe ich ein Problem.

Wenn ich das spiel nun über subprocess oder os.spawn* starte bekomme ich die nachricht "... hat ein Problem festgestellt und muss beendet werden".

Nach einigen versuchen mit batch dateien und allem möglichen habe ich es dann geschafft das spiel über python zu starten in dem ich die Verknüpfung aufrufe.

Das Problem ist das diese Verknüpfung bei mir zwar existiert, wenn ich das Programm allerdings z.b. an meinen Freund schicke hat er die Verknüpfung vielleicht nicht. Also habe ich eine Verknüpfung erstellt

Code: Alles auswählen

import os,sys,win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
link = shell.CreateShortcut(r"wwp.lnk")
link.TargetPath = r"C:\Programme..."
link.Save()
Allerdings funktioniert diese Verknüpfung nicht. Sie wird erstellt und ist "richtig". Beim ausführen kommt allerdings wieder der Fehler "... hat ein problem festgestellt.."

Der einzige Unterschied zwischen dieser Verknüpfung und der anderen (mit der es funktioniert) ist, das bei der, bei der es funktioniert im feld "Ausführen in" etwas steht.

Wie kann ich also eine Verknüpfung erzeugen die nicht nur Ziel hat sondern auch Ausführen in hat?
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
Nicht_zu_definieren
User
Beiträge: 21
Registriert: Freitag 21. April 2006, 17:01
Kontaktdaten:

Code: Alles auswählen

link.WorkingDirectory = r"C:\Programm\Fubar"
ist vermutlich das was du suchst ;)
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Danke genau das ist es

:P
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
lunar

Den selben Effekt kannst du übrigens auch erreichen, indem du der Popen Funktion aus dem Subprocess Modul das Argument "cwd" mit auf den Weg gibst:

Code: Alles auswählen

subprocess.Popen(['/Pfad/zu/meinem/Spiel'], cwd='/Pfad/zum/Spielverzeichnis')
Das sollte den Fehler auch beheben, und ist allgemein eleganter als der Umweg über die Verknüpfung.
Antworten