PDA

Visualizza la versione completa : Trucco di installazione automatica nuovi caratteri


Saint
29-10-2001, 21:25
Ciao a tutti. Vorrei segnalare un trucco che permette di far installare automaticamente nuovi caratteri in Win98/ME e caricarli direttamente in memoria senza dover maneggiare direttamente il registro di sistema. E' necessario semplicemente scrivere con un'editor di testo qualsiasi, una sorta di macro in VBScript, seguendo come traccia quella riportata qui sotto:


L_Welcome_MsgBox_Message_Text = "Installazione caratteri 'nomechar'"
L_Welcome_MsgBox_Title_Text = "Installazione di nuovi caratteri"
Call Welcome()
' ******************************************
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

Sub ManipFiles
Dim fso, f1, s
Set fso = CreateObject("Scripting.FileSystemObject")
' *********** Blocco 1 *****************
Set f1 = fso.GetFile("file1.ext")
' Copia del file file1.
f1.Copy ("c:\windows\fonts\file1.ext[B]")
' *********** Blocco 2 *****************
Set f1 = fso.GetFile("[B]file2.ext")
' Copia del file file2.
f1.Copy ("c:\windows\fonts\file2.ext")
' *********** Blocco 3 *****************
Set f1 = fso.GetFile("file3.ext")
' Copia del file file3.
f1.Copy ("c:\windows\fonts\file3.ext")
End Sub

Call ManipFiles

' ****** Blocco 1.1 **************
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Fonts\nome-esteso-carattere1", "C:\WINDOWS\Fonts\file1.ext"

' ****** Blocco 2.2 **************
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Fonts\nome-esteso-carattere2", "C:\WINDOWS\Fonts\file2.ext"

' ****** Blocco 3.3 **************
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Fonts\nome-esteso-carattere3", "C:\WINDOWS\Fonts\file3.ext"

' ******************************************

WSHShell.Popup "Installazione terminata!"
' ******************************************
Sub Welcome()
Dim intDoIt

intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _
vbOKCancel + vbInformation, _
L_Welcome_MsgBox_Title_Text )
If intDoIt = vbCancel Then
WScript.Quit
End If
End Sub


Mi spiego:

I campi in grassetto sono i campi che devono essere personalizzati da chi edita la macro;
Nella stringa [Installazione caratteri 'nomechar'] bisogna cambiare <nomechar> con il nome del carattere o della famiglia di caratteri;
Tutte le virgolette <"> e gli apici <'> non si possono omettere, ma bisogna riportarli come nel testo;
I blocchi 1, 2, 3 (ed i successivi blocchi 1.1, 2.2, 3.3) rappresentano i blocchi di installazione dei singoli file. Se si necessita l'installazione di un solo file, allora si riporta solo il blocco 1 accompagnato dal blocco 1.1 (omettendo nel codice della macro gli altri due blocchi). Se si devono installare 2 files allora si utilizzano i blocchi 1, 2, 1.1 e 2.2 e si omette il terzo blocco e cosė via;
La stringa <file1.ext> (analogamente <file2.ext> e <file3.ext> ) rappresentano i nomi dei files (dei fonts) da installare nel sistema ed ext rappresenta l'estensione del/dei file/s;
Le stringhe nome-esteso-carattere1, nome-esteso-carattere2 e nome-esteso-carattere3 rappresentano i nomi estesi dei caratteri che verranno caricati in memoria;


Ad esempio, supponiamo che io debba installare la famiglia di fonts "Snell" e abbia 3 files:

Primo file: Snellb.ttf con nome esteso Snell Bold BT (True Type);
Secondo file: Snellk.ttf con nome esteso Snell Black BT (True Type);
Terzo file: Snelln.ttf con nome esteso Snell BT (True Type);


allora scriverei la macro in questo modo:


L_Welcome_MsgBox_Message_Text = "Installazione famiglia 'Snell BT'"
L_Welcome_MsgBox_Title_Text = "Installazione di nuovi caratteri"
Call Welcome()
' ******************************************
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")

Sub ManipFiles
Dim fso, f1, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile("Snellb.ttf")
' Copia del file Snellb.
f1.Copy ("c:\windows\fonts\Snellb.ttf")
Set f1 = fso.GetFile("Snellk.ttf")
' Copia del file Snellk.
f1.Copy ("c:\windows\fonts\Snellk.ttf")
Set f1 = fso.GetFile("Snelln.ttf")
' Copia del file Snelln.
f1.Copy ("c:\windows\fonts\Snelln.ttf")
End Sub

Call ManipFiles

WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Fonts\Snell Black BT (True Type)", "C:\WINDOWS\Fonts\SNELLK.TTF"

WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Fonts\Snell Bold BT (True Type)", "C:\WINDOWS\Fonts\SNELLB.TTF"

WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Fonts\Snell BT (True Type)", "C:\WINDOWS\Fonts\SNELLN.TTF"

WSHShell.Popup "Installazione terminata!"
' ******************************************
Sub Welcome()
Dim intDoIt

intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _
vbOKCancel + vbInformation, _
L_Welcome_MsgBox_Title_Text )
If intDoIt = vbCancel Then
WScript.Quit
End If
End Sub


Prima di chiudere ci sono alcuni punti da precisare:

E' necessario salvare la macro con estensione .VBS;
E' necessario che i files dei caratteri da installare si trovino nella stessa cartella in cui č contenuta la macro di installazione;
E' indispensabile avere dimestichezza con le operazioni sul registro di sistema prima di provare questo trucco!


Questa macro copia i 3 files elencati sopra, nella cartella C:\windows\fonts e carica alcune chiavi nel registro di sistema, in maniera tale che ad ogni avvio di windows, questi fonts vengano caricati in memoria automaticamente.
Sconsiglio ai principianti di provare questo trucco, in quanto le voci che verranno inserite nel registro di sistema si possono eliminare solo aprendo il registro ed editandolo.
Sappiatemi dire se vi č piaciuto.
Ciao!

Saint
29-10-2001, 21:32
Errata corrige:

Sostituire la riga: f1.Copy ("c:\windows\fonts\file1.ext[B]") con la riga f1.Copy ("c:\windows\fonts\file1.ext");
Sostituire la riga: Set f1 = fso.GetFile("[B]file2.ext") con la riga Set f1 = fso.GetFile("file2.ext");


Spero che il restovada bene.
Ciao!