|
主要代码取自微软网站上的一篇文章,只做少许改动。 98、2000系统下已测试通过(打印机LQ-300K) ''''模块modPrint Option Explicit
Public Declare Function EnumForms Lib "winspool.drv" Alias "EnumFormsA" _ (ByVal hPrinter As Long, ByVal Level As Long, ByRef pForm As Any, _ ByVal cbBuf As Long, ByRef pcbNeeded As Long, _ ByRef pcReturned As Long) As Long Public Declare Function AddForm Lib "winspool.drv" Alias "AddFormA" _ (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte) As Long Public Declare Function DeleteForm Lib "winspool.drv" Alias "DeleteFormA" _ (ByVal hPrinter As Long, ByVal pFormName As String) As Long Public Declare Function OpenPrinter Lib "winspool.drv" _ Alias "OpenPrinterA" (ByVal pPrinterName As String, _ phPrinter As Long, ByVal pDefault As Long) As Long Public Declare Function ClosePrinter Lib "winspool.drv" _ (ByVal hPrinter As Long) As Long Public Declare Function DocumentProperties Lib "winspool.drv" _ Alias "DocumentPropertiesA" (ByVal hwnd As Long, _ ByVal hPrinter As Long, ByVal pDeviceName As String, _ pDevModeOutput As Any, pDevModeInput As Any, ByVal fMode As Long) _ As Long Public Declare Function ResetDC Lib "gdi32" Alias "ResetDCA" _ (ByVal hdc As Long, lpInitData As Any) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" _ (ByVal lpString1 As String, ByRef lpString2 As Long) As Long '''' Optional functions not used in this sample, but may be useful. Public Declare Function GetForm Lib "winspool.drv" Alias "GetFormA" _ (ByVal hPrinter As Long, ByVal pFormName As String, _ ByVal Level As Long, pForm As Byte, ByVal cbBuf As Long, _ pcbNeeded As Long) As Long Public Declare Function SetForm Lib "winspool.drv" Alias "SetFormA" _ (ByVal hPrinter As Long, ByVal pFormName As String, _ ByVal Level As Long, pForm As Byte) As Long '''' Constants for DEVMODE Public Const CCHFORMNAME = 32 Public Const CCHDEVICENAME = 32 Public Const DM_FORMNAME As Long = &H10000 Public Const DM_ORIENTATION = &H1& '''' Constants for PRINTER_DEFAULTS.DesiredAccess Public Const PRINTER_ACCESS_ADMINISTER = &H4 Public Const PRINTER_ACCESS_USE = &H8 Public Const STANDARD_RIGHTS_REQUIRED = &HF0000 Public Const PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or _ PRINTER_ACCESS_ADMINISTER Or PRINTER_ACCESS_USE) '''' Constants for DocumentProperties() call Public Const DM_MODIFY = 8 Public Const DM_IN_BUFFER = DM_MODIFY Public Const DM_COPY = 2 Public Const DM_OUT_BUFFER = DM_COPY '''' Custom constants for this sample''''s SelectForm function Public Const FORM_NOT_SELECTED = 0 Public Const FORM_SELECTED = 1 Public Const FORM_ADDED = 2 Public Type RECTL Left As Long Top As Long Right As Long Bottom As Long End Type Public Type SIZEL cx As Long cy As Long End Type Public Type SECURITY_DESCRIPTOR Revision As Byte Sbz1 As Byte Control As Long Owner As Long Group As Long Sacl As Long '''' ACL Dacl As Long '''' ACL End Type '''' The two definitions for FORM_INFO_1 make the coding easier. Public Type FORM_INFO_1 Flags As Long pName As Long '''' String Size As SIZEL ImageableArea As RECTL End Type Public Type sFORM_INFO_1 Flags As Long pName As String Size As SIZEL ImageableArea As RECTL End Type Public Type DEVMODE dmDeviceName As String * CCHDEVICENAME 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 As String * CCHFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Long dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type Public Type PRINTER_DEFAULTS pDatatype As String pDevMode As Long '''' DEVMODE DesiredAccess As Long End Type Public Type PRINTER_INFO_2 pServerName As String pPrinterName As String pShareName As String pPortName As String pDriverName As String pComment As String pLocation As String pDevMode As DEVMODE pSepFile As String pPrintProcessor As String pDatatype As String pParameters As String pSecurityDescriptor As SECURITY_DESCRIPTOR Attributes As Long Priority As Long DefaultPriority As Long StartTime As Long UntilTime As Long Status As Long cJobs As Long AveragePPM As Long End Type ''''判断系统是否为NT系统 Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _ (lpVersionInformation As OSVERSIONINFO) As Long Public Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 '''' Maintenance string for PSS usage End Type Public Function SelectForm(FormName As String, ByVal MyhWnd As Long) _ As Integer Dim nSize As Long '''' Size of DEVMODE Dim pDevMode As DEVMODE Dim PrinterHandle As Long '''' Ha [1] [2] [3] 下一页 没有相关教程
|