VBS: Creare Collegamento Windows (Shortcut) in Visual Basic

Incollo qui il sorgente di un Visual Basic Script per Windows che consente di creare sul Desktop di Windows un collegamento.

Può essere lanciato da DOS, quindi, da un comune file batch. Richiede 8 parametri, ovvero:

  1. Nome del Link (cioè del file .lnk)
  2. Target (cioè il programma da lanciare)
  3. Argomenti (da passare al Target, facoltativi)
  4. Working Directory (la cartella dalla quale lanciare il Target)
  5. Descrizione del Link
  6. Combinazione Tasti Scelta Rapida (facoltativa)
  7. Icona
  8. Codice Stile Finestra che può avere 3 valori: 1, 2 e 3

Con il valore “1”, in stile finestra, si ottiene la memorizzazione dello stato della finestra, con 2 è massimizzata e con 3 minimizzata ad icona.

Questo il sorgente del file che io ho chiamato “make_windows_link.vbs”:

'********************************************************************************
' UDA'Software 2018
' VERSIONE 2018-11-19
'
' QUESTO SCRIPT HA LO SCOPO DI CREARE UN LINK WINDOWS PER L'AVVIO DI UN
' PROGRAMMA.
'
' PER FUNZIONARE NECESSITA CHE VENGANO SPECIFICATI, IN PRECISO ORDINE, I SEGUENTI
' PARAMETRI:
'
' 1) NOME DEL LINK (SENZA ESTENSIONE, VIENE AGGIUNTA IN AUTOMATICO)
' 2) TARGET
' 3) ARGOMENTI
' 4) WORKING DIRECTORY (Directory di lancio)
' 5) DESCRIZIONE LINK
' 6) COMBINAZIONE TASTI SCELTA RAPIDA
' 7) ICONA
' 8) CODICE STILE FINESTRA (DESCRIZIONE FORNITA DA Microsoft):
' 
'    1 - activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position.
'    3 - Activates the window and displays it as a maximized window.
'    7 - Minimizes the window and activates the next top-level window.
' 
' 9) PERCORSO DOVE CREARE IL LINK (EX: %PUBLIC%\Desktop )
'
' ESEMPIO:
'
' make_windows_link.vbs "Link Guida Windows" "C:\Windows\winhlp32.exe" "" "C:\Windows" "Lancio della Guida" "CTRL+ALT+SHIFT+H" "C:\Windows\winhlp32.exe" 1
' make_windows_link.vbs "Link Guida Windows" "C:\Windows\winhlp32.exe" "" "C:\Windows" "Lancio della Guida" "CTRL+ALT+SHIFT+H" "C:\Windows\winhlp32.exe" 1 "%PUBLIC%\Desktop"
'
'********************************************************************************
Dim sLinkName 			' 0 Nome del Link
Dim sTargetPath			' 1 Target del link
Dim sArguments			' 2 Argomenti del target
Dim sWorkingDirectory	' 3 Working Directory
Dim sDescription		' 4 Descrizione del Link
Dim sHotKey				' 5 Combinazione Tasti Scelta Rapida
Dim sIconLocation		' 6 Icona da utilizzare
Dim iWindowStyle 		' 7 Stile Finestra

'********************************************************************************
iExitCode = 1	' PER DEFAULT IL CODICE DI USCITA E' ERRORE GENERICO

Set args = WScript.Arguments

If args.Count < 8 Then
	MsgBox "Procedura invocata senza gli 8 parametri previsi.", vbOKOnly & vbCritical, "ERRORE"
	wscript.Quit(iExitCode)
End If

' Associazione parametri
sLinkName = args.Item(0)
sTargetPath = args.Item(1)
sArguments = args.Item(2)
sWorkingDirectory = args.Item(3)
sDescription = args.Item(4)
sHotKey = args.Item(5)
sIconLocation = args.Item(6)
iWindowStyle = args.Item(7)

'********************************************************************************
Set oShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

'********************************************************************************
sDesktopPath = oShell.SpecialFolders("Desktop")

If args.Count >= 9 Then
	sDesktopPath = args.Item(8)
	
	If Not fso.FolderExists(sDesktopPath) Then
		Debug.Write "Cartella " + sDesktopPath + " inesistente"
		iExitCode = 3
		WScript.Quit(iExitCode)
	End If
End If

'********************************************************************************
Set oLink = oShell.CreateShortcut(sDesktopPath + "\\" + sLinkName + ".lnk")
oLink.TargetPath = sTargetPath
oLink.Arguments = sArguments
oLink.WorkingDirectory = sWorkingDirectory
oLink.Description = sDescription
oLink.HotKey = sHotKey
oLink.IconLocation = sIconLocation
oLink.WindowStyle = iWindowStyle
oLink.Save()

'********************************************************************************
If fso.FileExists(sDesktopPath + "\\" + sLinkName + ".lnk") Then
	iExitCode = 0
Else
	iExitCode = 2
End If

'********************************************************************************
' USCITA
' CODICI DI USCITA: 0 = OK / 1 = ERRORE ARGOMENTI / 2 = ERRORE FILE
WScript.Quit(iExitCode)
'********************************************************************************

Va preso e copiato dentro un file con estensione “.vbs” (ex: make_windows_link.vbs ); lo si può creare anche con Blocco Note o qualsiasi altro editor di testo ASCII.

Per usarlo lo si può lanciare da un file batch (.bat) o qualsiasi altra cosa possa eseguire comandi del sistema operativo; a titolo di esempio incollo un file batch che lo lancia e che ci si può personalizzare sostituendo i vari “%1”, “%2”, ecc… con quello che si vuole:

@echo OFF
title Creazione Icona %5
rem %1 : Nome del Link
rem %2 : Target
rem %3 : Parametri
rem %4 : Cartella Partenza
rem %5 : Descrizione
rem %6 : Hotkey
rem %7 : Icona
ECHO Creazione Icona %5
make_windows_link.vbs" %1 %2 %3 %4 %5 %6 %7 3 %8
IF NOT "%ERRORLEVEL%"=="0" (
	ECHO ********************************************************************************
	ECHO ATTENZIONE: NON RISULTA POSSIBILE CREARE L'ICONA: 
	ECHO             %5
	ECHO.
	ECHO PARAMETRI:
	ECHO.
	ECHO 1 : %1
	ECHO 2 : %2
	ECHO 3 : %3
	ECHO 4 : %4
	ECHO 5 : %5
	ECHO 6 : %6
	ECHO 7 : %7
	ECHO 8 : %8
	ECHO.
	ECHO ********************************************************************************
)