Seite 1 von 2

subst.exe mit RunProgram aufrufen

Verfasst: 03.08.2009 10:29
von Zizer
Hallo !
Das im Windos-Betriebssystem vorhandene Programm "SUBST.EXE" kann ich entweder manuell oder in einer Batchdatei erfolgreich ausführen, so dass ich ein beliebigen Ordner einer lokalen Festplatte mit einem LW-Buchstaben versehen kann.
Beispiel:

Code: Alles auswählen

subst y: "c:\Program Files\PureBasic"
Eine Umsetzung in PB mit RunProgamm gelingt mir nicht, obwohl der Compiler keine Fehler anzeigt.

Code: Alles auswählen

RunProgram("subst"," y:","c:\Program Files\PureBasic")
Was mache ich falsch?

Kann mir jemand helfen? :)

Verfasst: 03.08.2009 10:42
von DarkDragon

Code: Alles auswählen

RunProgram("subst", "y: " + Chr(34) + "C:\Program Files\PureBasic" + Chr(34), GetCurrentDirectory())
Du hast die 2 Parameter aufgeteilt.

[EDIT]
Hab Kaerus Beitrag nachträglich berücksichtigt. Bei mir gings ohne weil ich einen Leerzeichenlosen Pfad verwendet habe.

Verfasst: 03.08.2009 10:43
von Kaeru Gaman
und in deinem RunProgram-Aufruf fehlen die Anführungszeichen, die im Aufruf an der Kommandozeile Bestandteil des Befehls sind.

füge also in deinem zweiten Parameter die Anführungszeichen zum Übergebenen String hinzu mittels Chr().

Verfasst: 03.08.2009 12:45
von mk-soft

subst.exe mit RunProgram aufrufen

Verfasst: 03.08.2009 17:20
von Zizer
@DarkDragon , @Kaeru Gaman
Vielen Dank für Eure Unterstützung.
Der Code funtioniert...

Code: Alles auswählen

RunProgram("subst", "y: " + Chr(34) + "C:\Program Files\PureBasic" + Chr(34), GetCurrentDirectory())

Nachdem ich den Code in PureBasic kopiert und compiliert hatte, wurde "subst" allerdings noch nicht ausgeführt !

Erst als ich eine EXE-Datei erstellt und diese dann gestartet hatte, wurde das LW erstellt.


Woran kann das liegen?
Muss ich in PB spezielle Konfigurationen vornehmen?

Was bewirkt die Angabe "GetCurrentDirectory()" genau?
Wenn ich diese gegen einen Leerstring "" austausche, und wieder eine EXE-Datei erstelle, funktioniert
"subst" trotzdem...

Code: Alles auswählen

RunProgram("subst", "y: " + Chr(34) + "C:\Program Files\PureBasic" + Chr(34), "")
@mk-soft
Vielen Dank für den Tipp mit der WinAPI Library.
Ich bin allerdings wirklich noch blutiger Anfänger in PB,
obwohl ich PB schon vor längerer Zeit erworben habe.
Arbeit, Familie und Krankheit ließen hier bislang keine Zeit hierfür.

Gruß
Zizer

Re: subst.exe mit RunProgram aufrufen

Verfasst: 03.08.2009 19:42
von Little John
Zizer hat geschrieben:Nachdem ich den Code in PureBasic kopiert und compiliert hatte, wurde "subst" allerdings noch nicht ausgeführt !

Erst als ich eine EXE-Datei erstellt und diese dann gestartet hatte, wurde das LW erstellt.


Woran kann das liegen?
Keine Ahnung. Ich kann nur sagen, dass bei mir folgender Code

Code: Alles auswählen

LaufWerk$ = "y:"
Pfad$ = #DQUOTE$ + "c:\Program Files\PureBasic" + #DQUOTE$
RunProgram("subst", LaufWerk$ + " " + Pfad$, "")
innerhalb der IDE funktioniert (PB 4.31 auf Windows XP). Ich brauche nicht extra eine EXE-Datei zu erstellen.
Zizer hat geschrieben:Was bewirkt die Angabe "GetCurrentDirectory()" genau?
Wenn ich diese gegen einen Leerstring "" austausche, und wieder eine EXE-Datei erstelle, funktioniert
"subst" trotzdem...
GetCurrentDirectory() ist hier nicht nötig.

Gruß, Little John

Re: subst.exe mit RunProgram aufrufen

Verfasst: 03.08.2009 19:49
von DarkDragon
Little John hat geschrieben:
Zizer hat geschrieben:Was bewirkt die Angabe "GetCurrentDirectory()" genau?
Wenn ich diese gegen einen Leerstring "" austausche, und wieder eine EXE-Datei erstelle, funktioniert
"subst" trotzdem...
GetCurrentDirectory() ist hier nicht nötig.

Gruß, Little John
GetCurrentDirectory() wäre dann nötig, wenn man relative Pfade angibt (Wobei ich nicht sicher bin ob das überhaupt geht).

Re: subst.exe mit RunProgram aufrufen

Verfasst: 03.08.2009 19:54
von ts-soft
DarkDragon hat geschrieben: GetCurrentDirectory() wäre dann nötig, wenn man relative Pfade angibt (Wobei ich nicht sicher bin ob das überhaupt geht).
Aber auch nur wenn vorher sichergestellt wurde, das GetCurrentDirectory
auf das Programmverzeichnis zeigt, was ja nicht immer der Fall ist!

Re: subst.exe mit RunProgram aufrufen

Verfasst: 04.08.2009 09:32
von DarkDragon
ts-soft hat geschrieben:
DarkDragon hat geschrieben: GetCurrentDirectory() wäre dann nötig, wenn man relative Pfade angibt (Wobei ich nicht sicher bin ob das überhaupt geht).
Aber auch nur wenn vorher sichergestellt wurde, das GetCurrentDirectory
auf das Programmverzeichnis zeigt, was ja nicht immer der Fall ist!
Klar. Aber das ist für mich ein besserer Standardwert als "" für das Arbeitsverzeichnis. Denn es könnte genauso gut sein, dass subst.exe dann wieder eine EXE aufruft die das Verzeichnis benötigt (Ich weiß ja nicht was subst.exe genau macht ;-) ).

subst.exe mit RunProgram aufrufen

Verfasst: 04.08.2009 16:30
von Zizer
Hi Little John !
Dein Code funtioniert auch auf meinem Laptop:

Code: Alles auswählen

LaufWerk$ = "y:"
Pfad$ = #DQUOTE$ + "c:\Program Files\PureBasic" + #DQUOTE$
RunProgram("subst", LaufWerk$ + " " + Pfad$, "")
Allerdings auch erst nach der EXE-Erstellung.
Liegt vielleicht an Vista...
Ich werde es an meinem Desktop mit Win-XP nochmals testen.
Dann habe ich in der Help-Datei gesucht, aber ich kann keine Hinweise über die Konstante
#DQUOTE$
finden !.

Soll dies ein doppeltes " bedeuten?
Servus, Zizer