Code exemple donné dans MSDN :
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("gdi32")> _
Public Shared Function AddFontResource(ByVal lpFileName As String) As Integer
End Function
<DllImport("user32.dll")> _
Public Shared Function SendMessage(ByVal hWnd As Integer, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
End Function
<DllImport("kernel32.dll", SetLastError:=True)> _
Shared Function WriteProfileString(ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Integer
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Ret As Integer
Dim Res As Integer
Dim FontPath As String
Const WM_FONTCHANGE As Integer = &H1D
Const HWND_BROADCAST As Integer = &HFFFF
FontPath = WinFontDir & "" & FontFileName
Ret = AddFontResource(FontPath)
Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)
Ret = WriteProfileString("fonts", FontName & " (TrueType)", FontFileName)
End Sub
End Class
Ce code
- installe la police (AddFontResource, ou AddFontResourceEx pour plus d'options) qui n'est valable (pour le moment) que pour l'application et la session en cours.
- informe les autres applications (SendMessage) qu'un changement dans les polices a eu lieu
- enregistre dans le registre (WriteProfileString) pour qu'elle soit toujours disponible après le reboot et pour les autres sessions.
LE fichier font devra, au préalable, être copié dans le dossier font de Windows, représenté dans le code par la variable WinFontDir (nécessite une élévation de privilège sous W7, je crois).
Avec uniquement une simple copie du fichier dans le dossier font, la police ne sera disponible qu'après un reboot de la machine.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i