In primo luogo, è necessario copiare il carattere nella directory Windows \ Fonts (ti consigliamo di utilizzare il metodo Environment.GetFolderPath
fornito da .NET Framework invece di codificare manualmente il percorso tipico della finestra s directory, nel caso in cui qualcosa sia diverso in uno degli ambienti dei tuoi utenti).
Quindi, è necessario chiamare il AddFontResource
function per aggiungere il carattere alla tabella dei caratteri di sistema. Poiché lo standard AddFontResource
è fornito dall'API di Windows, è necessario P/Invoke per chiamarlo dal codice VB.NET. La dichiarazione simile a questa (il parametro lpszFilename
è il percorso del file di carattere che si desidera aggiungere):
<DllImport("gdi32.dll"), CharSet := CharSet.Auto> _
Public Shared Function AddFontResource(ByVal lpszFilename As String) As Integer
Infine, se Word (o qualsiasi applicazione che si intende utilizzare il tipo di carattere in) è esecuzione nel momento in cui si chiama la funzione AddFontResource
dal codice, è necessario informarlo che i caratteri disponibili sono stati modificati. A tale scopo, inviare un messaggio WM_FONTCHANGE
a tutte le finestre di livello superiore utilizzando la funzione SendMessage
e impostando il parametro hWnd
su HWND_BROADCAST
. Di nuovo, avrai bisogno di P/Invoke; le dichiarazioni di simile a questa:
Public Const HWND_BROADCAST As Integer = &HFFFF
Public Const WM_FONTCHANGE As Integer = &H1D
<DllImport("user32.dll"), CharSet := CharSet.Auto> _
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
e si dovrebbe chiamare per inviare il messaggio di trasmissione in questo modo:
SendMessage(New IntPtr(HWND_BROADCAST), WM_FONTCHANGE, IntPtr.Zero, IntPtr.Zero)
NOTA: I passaggi di cui sopra installare solo il tipo di carattere per la sessione corrente di Windows. Se è necessario che il carattere sia disponibile nei successivi riavvii, è necessario aggiungerlo al registro. La chiave da modificare è questa:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
Solo per commentare è necessario assicurarsi di essere autorizzati a distribuire il carattere - i caratteri sono software proprio come il tuo programma e hai bisogno del permesso prima di distribuire uno come descritto. – Oded
Questo è il tipo di cosa tipicamente (e migliore) eseguita da un * programma di installazione *, piuttosto che dal programma stesso. Di solito è più facile dire al tuo programma di installazione di installare un font piuttosto che farlo dall'interno dell'applicazione. –
Sarebbe grandioso, ma presumo che non sia qualcosa che va fatto con l'installer ClickOnce fornito con Visual Studio 2010 giusto? – Tom