zaturo
Goto Top

dynamische Links

Hallo liebe Community,

ich habe eine Frage bezüglich dynamischen Links in VB. Ich habe mich noch gar nicht mit VB beschäftigt und bin ein totaler Neuling.
Zur Erläuterung meines Problems. Ich habe auf meinem USB-Stick Xampp installiert und habe dies dann in PortableApps integriert. Damit ich nicht alle *.exe Dateien sehe, habe ich mir eine Batch Datei geschrieben die den Apache und MySQL Server als Dienst startet. Dies funktioniert auch soweit. Nun wollte ich die command windows nicht dauerhaft angezeigt haben und bin da wohl an die Grenzen der Kommandozeile unter Windows gestoßen. Mir wurde mitgeteilt, dass ich dies mit VB lösen kann und habe mich an die Arbeit gemacht und habe folgenden Code geschrieben:

set WshShell = WScript.CreateObject("WScript.Shell")
Laufwerkspfad = WshShell.ExpandEnvironmentStrings("%systemdrive%")
Wscript.Echo Laufwerkspfad

Dieses Script gibt nun den SystemRoot wieder, ich würde dort aber gern den Pfad meines USB sticks haben. Unter der Kommandozeile ist dies relativ leicht mit %CD% zu lösen. So erhält man den Pfad des Laufwerks auf dem die Datei liegt. Gibt es eine ähnlich leichte Methode für VB den Pfad der Datei herauszubekommen und danach auch zu verwenden?

Mein momentanes Scripts ist:
MySQL_apache_start.bat --> konvertiert zu .exe
start %CD%PortableApps\Xampp\xampplite\mysql_start.bat
start %CD%PortableApps\Xampp\xampplite\apache_start.bat

Danke schon einmal im voraus für die Hilfe.

Content-Key: 103906

Url: https://administrator.de/contentid/103906

Printed on: April 24, 2024 at 23:04 o'clock

Member: bastla
bastla Dec 11, 2008 at 20:09:55 (UTC)
Goto Top
Hallo zaturo und willkommen im Forum!
Gibt es eine ähnlich leichte Methode für VB
Set WshShell = WScript.CreateObject("WScript.Shell")  
Laufwerkspfad = WshShell.CurrentDirectory
WScript.Echo Laufwerkspfad
Wenn Du nur das Laufwerk benötigst:
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set fso = CreateObject("Scripting.FileSystemObject")  
Laufwerk = fso.GetDriveName(WshShell.CurrentDirectory)
WScript.Echo Laufwerk
Alternativ-Variante (verwendet den Pfad des Scripts anstelle des aktiven Verzeichnisses - analog zu "%~d0" in einem Batch):
Set fso = CreateObject("Scripting.FileSystemObject")  
Laufwerk = fso.GetDriveName(WScript.ScriptFullName)
Um einen Pfad zusammenzusetzen:
mysql = Laufwerk & "\PortableApps\Xampp\xampplite\mysql_start.bat"  
Schließlich zum Starten:
Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run mysql, 0
Das "WshShell"-Objekt muss im Script nur einmal erzeugt werden (ist hier also nur bei der Alternativ-Variante erforderlich).

Grüße
bastla

[Edit] Obwohl für einen USB-Stick nicht unbedingt nötig: Laufwerksermittlung auf "GetDriveName"-Methode umgestellt [/Edit]
Member: zaturo
zaturo Dec 11, 2008 at 20:56:16 (UTC)
Goto Top
Hi bastla,

danke für die schnelle Antwort. Die Laufwerksaufschlüssung funktioniert einwandfrei =), kann die Dateien somit starten. Kann ich nun die geöffneten Shells auch versteckt halten? Weil momentan sind diese ja geöffnet auf meinem Desktop sichtbar. Danke schön schon mal im voraus =).
Member: bastla
bastla Dec 11, 2008 at 21:10:17 (UTC)
Goto Top
Hallo zaturo!

Das gesamte Script könnte so aussehen:
Set fso = CreateObject("Scripting.FileSystemObject")  
Set WshShell = WScript.CreateObject("WScript.Shell")  

Laufwerk = fso.GetDriveName(WScript.ScriptFullName)
mysql = Laufwerk & "\PortableApps\Xampp\xampplite\mysql_start.bat"  
apache = Laufwerk & "\PortableApps\Xampp\xampplite\apache_start.bat"  

WshShell.Run mysql, 0
WshShell.Run apache, 0
Grüße
bastla
Member: zaturo
zaturo Dec 11, 2008 at 21:17:29 (UTC)
Goto Top
Hi nochmal,

wer lesen kann ist klar im Vorteil ^^". Ich habe die , 0 völlig ausser Acht gelassen und somit konnte es ja auch nicht versteckt laufen.

Ich danke für die wirklich schnellen Antworten! Weiter so =).

LG zaturo
Member: bastla
bastla Dec 11, 2008 at 21:22:54 (UTC)
Goto Top
Hallo zaturo!
Weiter so =).
Ich dachte, das war's schon ... face-wink

Grüße
bastla