Получаем информацию о принтере, используемом
по умолчанию
Автор: Andre Masson
Поместите следующий код в модуль BAS module (либо,
если необходимо, то преобразуйте его в класс)
'Объявление API функции
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
'---------------------------------------------------------------
' Получаем vb объект "printer", отвечающий за виндовый
' принтер по умолчанию.
'---------------------------------------------------------------
public Function GetDefaultPrinter() as Printer
Dim strBuffer as string * 254
Dim iRetValue as Long
Dim strDefaultPrinterInfo as string
Dim tblDefaultPrinterInfo() as string
Dim objPrinter as Printer
' Получаем информацию о текущем дефолтовом принтере
iRetValue = GetProfileString("windows", "device", ",,,", strBuffer, 254)
strDefaultPrinterInfo = Left(strBuffer, InStr(strBuffer, Chr(0)) - 1)
tblDefaultPrinterInfo = Split(strDefaultPrinterInfo, ",")
for Each objPrinter In Printers
If objPrinter.DeviceName = tblDefaultPrinterInfo(0) then
' Дефолтовый принтер найден !
Exit for
End If
next
' Если не найден, то ничего не возвращаем
If objPrinter.DeviceName <> tblDefaultPrinterInfo(0) then
set objPrinter = nothing
End If
set GetDefaultPrinter = objPrinter
End Function
Теперь протестируем эту функцию. Поместите
следующий код в функцию Form_Load :
private Sub Form_Load()
Dim objPrinter as Printer
set objPrinter = GetDefaultPrinter()
MsgBox "Default printer is: " + objPrinter.DeviceName
MsgBox "Driver name is: " + objPrinter.DriverName
MsgBox "Port is: " + objPrinter.Port
set objPrinter = nothing
End
End Sub
|