判断打印机是否支持彩色/双面打印
时 间:2008-10-13 19:22:30
作 者:danis ID:3378 城市:广州
摘 要:判断打印机是否支持彩色/双面打印
正 文:
判断打印机是否支持彩色/双面打印 Const NULLPTR = 0& 'Constants for DEVMODE Const CCHDEVICENAME = 32 Const CCHFORMNAME = 32 'Constants for DocumentProperties Const DM_MODIFY = 8 Const DM_COPY = 2 Const DM_IN_BUFFER = DM_MODIFY Const DM_OUT_BUFFER = DM_COPY Private Type DEVMODE dmDeviceName(1 To CCHDEVICENAME) As Byte dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName(1 To CCHFORMNAME) As Byte dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type Declare Function OpenPrinterA Lib "winspool.drv" (ByVal pPrinterName As String, phPrinter As Long, _ ByVal pDefault As Long) As Long Declare Function DocumentPropertiesA Lib "winspool.drv" (ByVal hwnd As Long, ByVal hPrinter As Long, _ ByVal pDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any, ByVal fMode As Long) As Long Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Function StripNulls(OriginalStr As String) As String If (InStr(OriginalStr, Chr(0)) > 0) Then originalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1) End If StripNulls = Trim(OriginalStr) End Function Function ByteToString(ByteArray() As Byte) As String Dim TempStr As String Dim I As Integer For I = 1 To CCHDEVICENAME TempStr = TempStr & Chr(ByteArray(I)) Next I ByteToString = StripNulls(TempStr) End Function Function GetPrinterSettings(szPrinterName As String) As Boolean Dim hPrinter As Long Dim nSize As Long Dim pDevMode As DEVMODE Dim aDevMode() As Byte Dim TempStr As String If OpenPrinterA(szPrinterName, hPrinter, NULLPTR) Then nSize = DocumentPropertiesA(NULLPTR, hPrinter, szPrinterName, NULLPTR, NULLPTR, 0) ReDim aDevMode(1 To nSize) nSize = DocumentPropertiesA(NULLPTR, hPrinter, szPrinterName, aDevMode(1), NULLPTR, DM_OUT_BUFFER) Call CopyMemory(pDevMode, aDevMode(1), Len(pDevMode)) Debug.Print "Printer Name: " & ByteToString(pDevMode.dmDeviceName) Debug.Print "PaperSize:" & pDevMode.dmPaperSize Select Case pDevMode.dmDuplex Case 1: TempStr = "None 单面打印" Case 2: TempStr = "Duplex on long edge (book) 长边翻页打印" Case 3: TempStr = "Duplex on short" End Select Debug.Print "Duplex:" & TempStr '获取打印机是否支持彩色打印 Select Case pDevMode.dmColor Case 1: TempStr = "MONOCHROME" Case 2: TempStr = "COLOR" Case Else: TempStr = "UNDEFINED" End Select Debug.Print "Color or Monochrome: " & TempStr Call ClosePrinter(hPrinter) GetPrinterSettings = True Else GetPrinterSettings = False End If End Function Sub Test() GetPrinterSettings Left(Application.ActivePrinter, InStr(Application.ActivePrinter, "在") - 2) End Sub
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(12)-月度结存...(04.16)
- 仓库管理实战课程(11)-人性化操...(04.15)
- 32位的Access软件转化为64...(04.12)
- 【Access高效办公】如何让vb...(04.11)
- 仓库管理实战课程(10)-入库功能...(04.08)
- Access快速开发平台--Fun...(04.07)
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)