OBTENIR LE NOM DE L'IMPRIMANTE PAR DÉFAUT

Voici un exemple de code qui permet d'obtenir le nom de l'imprimante par défaut. Le cas échéant, il est facile de récupérer aussi le port associé.

Déclarations :

Private Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Dim Text As String * 128, PrinterDefName As String, rc As Long

Code :

rc = GetProfileString("Windows", "Device", PtrCtoVbString(PInf1(1).pName), Text, 128)
If rc <= 0 Then Exit Sub
PrinterDefName = RemNull(Text)
' En fait, ici, PrinterDefName contient le nom de l'imprimante, le nom du gestionnaire des impressions (winspool), et le port associé (LPT1:). Ces 3 infos sont séparées par des virgules. Seule la première info nous intéresse ici.
I = InStr(1, PrinterDefName, ",")
If I > 0 Then PrinterDefName = Left(PrinterDefName, I - 1)

' Procédure pour enlever les caractères nulls
Private Function RemNull(Text As String) As String
Dim Npos As Integer
Npos = InStr(1, Text, Chr(0))
If Npos > 0 Then
         RemNull = Left(Text, Npos - 1)
Else
         RemNull = Text
End If
End Function

Retour à l'accueil