1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| Option Explicit
Const HWND_BROADCAST = &HFFFF
Const WM_WININICHANGE = &H1A
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
'
' API kernel32.dll
'
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
' lire dans un fichier INI
Private Declare Function apiGetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long, _
ByVal lpFileName As String) As Long
' renvoyer le répertoire Windows
Private Declare Function apiGetWindowsDirectory Lib "kernel32" _
Alias "GetWindowsDirectoryA" ( _
ByVal lpBuffer As String, ByVal nSize As Long) As Long
' écrire dans un fichier INI
Private Declare Function apiWritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, ByVal lpString As Any, _
ByVal lpFileName As String) As Long
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
'
' API user32.dll
'
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
' envoyer un message qui indique à Windows la mise à jour de WIN.INI
Private Declare Function apiSendMessage Lib "user32" _
Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Integer, ByVal lParam As Any) As Long
Private strPath As String
Private lngNC As Long
Private strRet As String
Sub SwitchDefaultPrinter(Nom As String)
' modifie le nom de l'imprimante par défaut
strPath = String(260, 0)
' récupère le chemin de win.ini
strPath = Left$(strPath, apiGetWindowsDirectory(strPath, Len(strPath))) + "\win.ini"
strRet = String(255, 0)
lngNC = apiGetPrivateProfileString("Devices", Nom, "", strRet, 255, strPath)
strRet = Left(strRet, lngNC)
' écrit dans win.ini le nom de l'imprimante souhaitée
apiWritePrivateProfileString "windows", "device", Nom & "," & strRet, strPath
' signale à MS Windows de prendre en compte la modification de win.ini
apiSendMessage HWND_BROADCAST, WM_WININICHANGE, 0, "windows"
End Sub
Function GetDefaultPrinter() As String
' renvoie le nom de l'imprimante par défaut
strPath = String(260, 0)
strPath = Left$(strPath, apiGetWindowsDirectory(strPath, Len(strPath))) + "\win.ini"
strRet = String(255, 0)
lngNC = apiGetPrivateProfileString("windows", "device", "", strRet, 255, strPath)
strRet = Left(strRet, lngNC)
lngNC = InStr(strRet, ",")
GetDefaultPrinter = Left(strRet, lngNC - 1)
End Function |
Partager