Private Declare Function PrinterProperties Lib "winspool.drv" (ByVal hwnd As _
Long, ByVal hPrinter As Long) As Long
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" _
(ByVal pPrinterName As String, phPrinter As Long, _
pDefault As PRINTER_DEFAULTS) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As _
Long) As Long
Private Type PRINTER_DEFAULTS
pDatatype As String
pDevMode As Long
pDesiredAccess As Long
End Type
' Display the Printer Properties dialog box.
' The DeviceName argument is the DeviceName property of the Printer object or
' an item in the Printers collection.
' ParentHWnd is the handle of the window that owns the dialog box.
'
' Returns True if the function succedes.
Function ShowPrinterProperties(ByVal DeviceName As String, _
ByVal ParentHWnd As Long) As Boolean
Dim PrinterDef As PRINTER_DEFAULTS
Dim hPrinter As Long
Const PRINTER_ALL_ACCESS = &HF000C
PrinterDef.pDesiredAccess = PRINTER_ALL_ACCESS
If OpenPrinter(DeviceName, hPrinter, PrinterDef) Then
ShowPrinterProperties = PrinterProperties(ParentHWnd, hPrinter)
ClosePrinter hPrinter
End If
End Function