wisch
Goto Top

Desktopverknüpfung per VBS ohne Anführungszeichen im Ziel

Hallo.

Ich habe ein VBS-Script erstellt nach Vorlagen aus diesem Forum hier.
Damit lege ich eine Desktopverknüpfung an, was prinzipiell auch gut funktioniert.
Das Ziel ist jedoch eine lokale URL zu einem Javaprogramm das ich aber direkt über Java und nicht per Umweg über den Browser starten möchte.
Das Script sieht aktuell so aus:

' Verknüpfung auf dem Desktop anlegen per VBS-Scripting  

' Variablenvorgabe  
Const strProgrammtitel="NAME" 'Name der Verknüpfung  
Const strProgramm="%windir%\system32\javaws.exe http://<URL>/javaanwendung.jnlp" 'Programm das Verknüpft werden soll  
Const strAusfuehrenIn="%windir%" 'Verzeichnis -Ausführen in-  
Const strIcon="C:\meinicon.ico" 'Eigenes Icon für die Verknüpfung   

Dim ObjShell
Set ObjShell = CreateObject("WScript.Shell")  
ObjShell = msgbox("Wollen Sie eine Desktopverknüpfung anlegen?", +vbYesNo+vbExclamation ,"")  
If ObjShell = vbYes then
  Dim objShortcut
  'Dim objShell  
  Set objShell= WScript.CreateObject("Wscript.Shell")  
  strLPfad=objShell.SpecialFolders("Desktop")  
  Set objShortcut=objShell.CreateShortcut(strLPfad & "\" & strProgrammtitel & ".lnk")  
  objShortcut.TargetPath= strProgramm
  objShortcut.WorkingDirectory= strAusfuehrenIn
  objShortcut.Description= strProgrammtitel
  ' objShortcut.IconLocation = strProgram & ", -1500"      'Programmicon verwenden  
  objShortcut.IconLocation = strIcon & ", -1500"      'Eigenes Icon verwenden  
  objShortcut.Save
End if

Mein Problem ist nun, das die Verknüpfung zwar mein 'strProgramm' als Inhalt hat, allerdings jeweils mit Anführungszeichen
davor und dahinter... ohne würde der Link funktionieren.

Wie bekomme ich die weg?

Und als zusätzliche Frage: Kann ich das sich öffenede Dos-Fenster beim Lauf der VBS unterdrücken?


Danke für Eure Hilfe.

Content-Key: 147557

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

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

Member: TsukiSan
TsukiSan Jul 24, 2010 at 09:56:10 (UTC)
Goto Top
Hallo WiSch,

was mich erst einmal wundert ist das
%windir%
Und wo hast du denn dein Problem mit den Gänsefüßchen?
In deinem Beispiel wird
strProgramm
doch gar nicht mit " angezeigt?

Gruss
Tsuki
Member: Biber
Biber Jul 24, 2010 at 11:26:28 (UTC)
Goto Top
Moin WiSch,

auch ich verstehe die Frage nicht ganz... ich kann auch nicht nachvollziehen, wo denn Gänsefüsschen zu sehen sind...??

Aber ich würde dennoch mindestens eine Sache ändern.

In die Property "TargetPath" gehört nach meinem ästhetischen Empfinden wirklich nur das "Programm", also bei dir die javaws.exe.
[Anmerkung: Variablen wie %windir% sollten bei einem Desktop-Link (=Kontext ist angemeldeter Benutzer) aufgelöst werden.
Du hast doch den Zugriff auf das User-Environment.]

Die Parameter gehören (ohne zusätzliche Anführungszeichen) in das optionale Property objShortCut.Arguments

Zur Zusatzfrage (VBS ohne sichtbares Fenster laufen lassen) müsste die Forumssuche ein paar Treffer liefern.
Wobei ich nicht ganz durchschaue
a) von wo denn
b) wieso denn mehr als einmal im Leben
du denn diese Shortcut-Erstellung aufrufst.

Grüße
Biber
Member: WiSch
WiSch Jul 24, 2010 at 15:02:21 (UTC)
Goto Top
Hallo.

Mehr Details:
Ich habe eine Java-Anwendung (nicht von mir) die ich per URL starten kann.
Dafür soll auf allen Clients im Netz ein Desktoplink zur Verfügung gestellt werden.
Der Aufruf nur der URL alleine funktioniert, öffnet aber immer ein Browserfenster (oder einen neuen Tab im geöffneten Browser).
-> Ist das der IE, dann öffnet sich dieser und schließt nach Java-Programmstart wieder (oder halt nur den entsprechenden Tab).
-> Ist das der FF, dann bleibt der nach Java-Programmstart geöffnet.
Beide möchte ich nicht, deshalb der Start über die javaws.exe.

Bei mir lokal hat der Link nur mit "javaws.exe" nicht funktioiniert, weshalb ich den Pfad davor gepackt habe. Dieser wiederum muß ja nicht zwingend auf allen Clients gleich sein, deshalb das %windir% ...

Doch zurück zum Gänsefüßchen:
Wenn ich das Script hier verwende, dann bekomme ich einen Link der prinzipell genau so ist wie ich Ihn haben möchte, nur funktioniert er leider nicht.
Wenn ich dann über die Eigenschaften im Feld ZIEL die umschließenden Gänsefüßchen vor und hinter dem Ziel entferne und das übenehme, dann funktioniert es...

Wenn ich den Link manuell anlege und das Ziel angebe, dann klappte es auch und Windows fügt nicht automatisch irgendwelche Gänsefüßchen ein.
Also muß das doch irgendwie aus dem Script kommen, oder verstehe ich hier was Grundsätzliches falsch?

Gruß,
WiSch
Member: Biber
Biber Jul 24, 2010 at 15:22:51 (UTC)
Goto Top
Moin WiSch,

danke für die Erläuterung.

Ich kann das Problem zwar immer noch nicht richtig fassen bzw. eine Lösung anbieten, aber noch mal zwei Anregungen.
a) Thema "%windir% kann bei jedem Client ein anderes sein" - ja nee, keine Frage.
Aber dennoch kannst du es doch bei Anlegen des Links auflösen. [Mit Betonung auf "du kannst es". Denn ob Windows immer alle Umgebungsvariablen auflösen mag, die in Links oder vor allem in Registrywerten stehen... ich bin da Pessimist.] Aber das war ohnehin nur eine Fussnote.. hatte nichts mit der eigentlichen Frage zu tun.
b) was hältst du denn zur Problemeingrenzung von einer kleinen Laubsägearbeit? Mal die Werte des manuell erzeugten funktionierenden Links mit WScript.echo per VBS ausgeben und die automatisiert erzeugten drüberlegen?
Und mal posten, was da jetzt wo übersteht?

Grüße
Biber
Member: WiSch
WiSch Jul 24, 2010 at 17:51:28 (UTC)
Goto Top
Hallo Biber.

Das mit der "Laubsägearbeit" war eine gute Idee!!
Ich betätige mich innerhalb von Batch und VBS als 'Scriptkid', habe folgendes Script zum auslesen der Infos gefunden und genutzt (Zur Info, falls mal jemand in diesen Beitrag guckt und es gebrauchen kann):
set WshShell = WScript.CreateObject("WScript.Shell")  
 strDesktop = WshShell.SpecialFolders("Desktop")  
 set Link1 = WshShell.CreateShortcut(strDesktop & "\NAME_DER_VERKNÜPFUNG.lnk")  
 msgbox "Targetpath = " & Link1.TargetPath  & vbcrlf _  
  & "WorkingDirectory = " & Link1.WorkingDirectory & vbcrlf _  
  & "Arguments = " & Link1.Arguments & vbcrlf _  
  & "WindowStyle = " & Link1.WindowStyle & vbcrlf _  
  & "Hotkey = " & Link1.Hotkey & vbcrlf _  
  & "IconLocation = " & Link1.IconLocation & vbcrlf _  
  & "Description = " & Link1.Description & vbcrlf  

Dabei ist dann herausgekommen, das als ZIEL die javaws.exe angegeben wird und als ARGUMENT "meine" URL zum Javaprogramm.... Ich hatte das die ganze Zeit andersrum probiert....

Kaum macht man es richtig, dann funktioniert es auch! face-big-smile
Hier das Script, wie ich es aktuell nun nutze:
' Verknüpfung auf dem Desktop anlegen per VBScript  

' Variablenvorgabe  
Dim objShell
Dim objShortCut
  
Set objShell = CreateObject("WScript.Shell")  
strWinDir = objShell.ExpandEnvironmentStrings("%WinDir%")  ' Windows Systemverzeichnis ermitteln  
strLPfad=objShell.SpecialFolders("Desktop")  'Pfad zum Desktop  

strProgrammtitel = "NAME"  'Name der Verknüpfung  
strProgramm = strWinDir & "\system32\javaws.exe"  'Programm das Verknüpft werden soll  
strArguments = "http://<URL>/javaanwendung.jnlp"  'Startargumente für das zu startende Programm  
strAusfuehrenIn = strWinDir  'Verzeichnis -Ausführen in-  
strIcon = "C:\meinicon.ico"  'Eigenes Icon für die Verknüpfung     

' Rueckfrage ob Erstellung der Verknüpfung ok ist  
ObjShell = msgbox("Wollen Sie eine Desktopverknüpfung anlegen?", +vbYesNo+vbExclamation ,"")   

' Ist ok? Dann erstellen  
If ObjShell = vbYes then
Set objShell= WScript.CreateObject("Wscript.Shell")  
Set objShortCut=objShell.CreateShortCut(strLPfad & "\" & strProgrammtitel & ".lnk")  
objShortCut.Arguments= strArguments
objShortCut.TargetPath= strProgramm
objShortCut.WorkingDirectory= strAusfuehrenIn
objShortCut.Description= strProgrammtitel
' objShortcut.IconLocation = strProgram & ", -1500"      'Programmicon verwenden  
objShortCut.IconLocation = strIcon & ", -1500"           'Eigenes Icon verwenden  
objShortCut.Save
End if

Habt dank für die Hilfe.

Grüße,
WiSch