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 ********************************************************************************
)

iCloud: Leggere la posta da Gmail

Questo articolo mi serve più che altro come promemoria perché sistematicamente mi scordo come configurare Gmail per leggere la posta di iCloud.

Sinteticamente: bisogna creare una apposita password, tramite il Pannello Amministrativo di iCloud, per consentire a Gmail di accedere alla posta dell’account Apple, quindi, NON FUNZIONA CON LA PASSWORD USATA PER L’ACCOUNT iTunes !

Le impostazioni e la pagina per creare la password in questione sono molto chiaramente esposte QUI .

Kit Kuman Arduino UNO R3- Buzzer Attivo

Dopo la notevole tribolazione nel gestire la famigerata Matrice di LED 8×8 mi sono cimentato con la Lezione 7 del Tutorial Kuman Arduino UNO r3 che prevede l’utilizzo di un “Active Buzzer Module”.

Ebbene, non so se ho sbagliato qualcosa io – probabile – ma, di fatto, non sono riuscito a realizzare niente di simile al tutorial, o meglio: sembra che il tutorial faccia riferimento a componenti che non sono presenti nel kit – o quantomeno non sono identici – e comunque il tutorial stesso mi è sembrato poco chiaro.

Morale della favola ho realizzato una cosa tipo quella in figura:

Pilotaggio di un Buzzer Attivo tramite un Resistore Variabile e Arduino

Leggi tutto “Kit Kuman Arduino UNO R3- Buzzer Attivo”

Kit Kuman Arduino UNO R3- Dot Matrix

Dopo il Sensore di Fiamma mi sono cimentato con la Matrice di LED 1588BS.

Ho tribolato parecchio perché non capivo il funzionamento. Le difficoltà per un principiante – come me – sono le seguenti:

  1. La matrice è composta da 64 LED disposti in 8 righe da 8 colonne (8×8 = 64)
  2. Nella parte inferiore presenta 8+8 PIN (16 in tutto) che governano righe e colonne in un certo modo (che poi vi spiego)
  3. Arduino UNO non dispone di 16 uscite digitali, quindi, bisogna ricorrere anche a quelle analogiche per gestire la matrice.
  4. La matrice ha una discreta dimensione, quindi, non si riesce – almeno non facilmente – a piazzare su un’unica breadboard; nel mio caso ne ho usato una grande e una piccola.
  5. Su ogni Catodo (alcuni PIN della matrice sono catodi [-] e altri anodi [+]) è opportuno mettere una resistenza da 220 Ohm e, non essendo particolarmente chiara la documentazione fornita da Kuman (ma anche quella che ho trovato in rete è chiara il giusto), ho faticato molto a capire come andavano eseguiti i collegamenti.

Implementazione della Lezione 6 del Kit Kuman Arduino UNO r3

Leggi tutto “Kit Kuman Arduino UNO R3- Dot Matrix”

Kit Kuman Arduino UNO R3- Sensore di Fiamma

Ho deciso di cimentarmi un po’ nell’Elettronica e, per partire, ho deciso di acquistare un kit Arduino.

Alla fine – dopo che mi è arrivato – ho scoperto che è tarocco, nel senso che non arriva la scheda Arduino UNO r3 originale ma un clone realizzato da una ditta cinese di nome Kuman.

Poco male: mi è costato una ventina di euro, contiene un sacco di roba (incredibile quanta ne sono riusciti a stipare dentro la scatola) e, tutto sommato, ritengo di aver fatto un ottimo acquisto.

Implementazione della Lezione 5 del Kit Kuman Arduino UNO r3

Leggi tutto “Kit Kuman Arduino UNO R3- Sensore di Fiamma”

PayPal usato per un tentativo di Phishing subdolo

Mi è arrivata questa mail:

Una E-Mail da finto PayPal

Ok, già il fatto che venga usata la lingua inglese doveva insospettirmi subito, ma dato che l’ho letta di sera, stanco da una lunga giornata lavorativi, ammetto che – per un attimo – ci sono cascato !

Leggi tutto “PayPal usato per un tentativo di Phishing subdolo”

SolidWorks VBA: Copia Incolla di una stringa nella Clipboard (COPY/PASTE)

Cercando sul Forum di SolidWorks come implementare in VBA il copia/incolla di una stringa, mi è uscito un post che risolve il problema solo se si possono attivare le Aggiunte.

Ho quindi cercato una soluzione alternativa, che propongo:

Const DATAOBJECT_BINDING As String = "new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"

Public Sub CopyStringToClipboard(ByVal Expression As String)
 With CreateObject(DATAOBJECT_BINDING)
 .SetText Expression
 .PutInClipboard
 End With
End Sub

E’ sufficiente passare a questa subroutine la stringa da copiare in memoria e il gioco è fatto.

Google Play su Mac OS X

Lo so, usare Google Play su Mac OS X, per qualcuno può risultare un sacrilegio. Ok, ne sono consapevole ma: io lo uso su Android – ok, non ho nemmeno l’iPhone ! – e mi piaceva l’idea di usarlo anche sul Mac.

Stranamente nell’App Store di Apple non ho trovato nulla in merito e googlando ho trovato un player che invece funziona perfettamente sul Mac: Radiant Player

Leggi tutto “Google Play su Mac OS X”

phpMyAdmin + MySQL: Questa tabella non contiene una colonna unica.

Utilizzando phpMyAdmin con MySQL mi è capitato di imbattermi nel seguente messaggio di errore:

Questa tabella non contiene una colonna unica. Funzionalità relative alla modifica, copia ed eliminazione potrebbero non funzionare dopo il salvataggio.

in inglese, il medesimo errore, è il seguente:

This table does not contain a unique column. Features related to the grid edit, checkbox, Edit, Copy and Delete links may not work after saving.

L’errore si manifesta nel momento in cui cerco di modificare il valore di un campo.

Leggi tutto “phpMyAdmin + MySQL: Questa tabella non contiene una colonna unica.”

iMac: Disabilitare l’apertura automatica di Foto all’inserimento di una SD Card

Trovo molto fastidioso che – per default – all’inserimento di una SD Card si apra automaticamente Foto, il programma di gestione immagini dell’iMac.

Leggi tutto “iMac: Disabilitare l’apertura automatica di Foto all’inserimento di una SD Card”