关于vb api函数 openprinter()

toerdo 2003-02-11 03:44:09
我声明的openprinter函数如下:

Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Private 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 Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private 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 Long
pSepFile As String
pPrintProcessor As String
pDatatype As String
pParameters As String
pSecurityDescriptor As Long
Attributes As Long
Priority As Long
DefaultPriority As Long
StartTime As Long
UntilTime As Long
Status As Long
JobsCount As Long
AveragePPM As Long
End Type
Private Type PRINTER_DEFAULTS
pDatatype As String
pDevMode As DEVMODE
DesiredAccess As Long
End Type
Public Enum Printer_Status
PRINTER_STATUS_READY = &H0
PRINTER_STATUS_PAUSED = &H1
PRINTER_STATUS_ERROR = &H2
PRINTER_STATUS_PENDING_DELETION = &H4
PRINTER_STATUS_PAPER_JAM = &H8
PRINTER_STATUS_PAPER_OUT = &H10
PRINTER_STATUS_MANUAL_FEED = &H20
PRINTER_STATUS_PAPER_PROBLEM = &H40
PRINTER_STATUS_OFFLINE = &H80
PRINTER_STATUS_IO_ACTIVE = &H100
PRINTER_STATUS_BUSY = &H200
PRINTER_STATUS_PRINTING = &H400
PRINTER_STATUS_OUTPUT_BIN_FULL = &H800
PRINTER_STATUS_NOT_AVAILABLE = &H1000
PRINTER_STATUS_WAITING = &H2000
PRINTER_STATUS_PROCESSING = &H4000
PRINTER_STATUS_INITIALIZING = &H8000
PRINTER_STATUS_WARMING_UP = &H10000
PRINTER_STATUS_TONER_LOW = &H20000
PRINTER_STATUS_NO_TONER = &H40000
PRINTER_STATUS_PAGE_PUNT = &H80000
PRINTER_STATUS_USER_INTERVENTION = &H100000
PRINTER_STATUS_OUT_OF_MEMORY = &H200000
PRINTER_STATUS_DOOR_OPEN = &H400000
PRINTER_STATUS_SERVER_UNKNOWN = &H800000
PRINTER_STATUS_POWER_SAVE = &H1000000
End Enum
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long

为什么我调用该函数时它总提示用户定义类型不能用,是在最后一个参数pDef出错的
调用语句如下:
openprinter(printer.devicename,pPrinterHdc,pDef)
...全文
188 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
toerdo 2003-02-11
  • 打赏
  • 举报
回复
补充:再表单上无显示(搞错了)
但通过msgbox()测试,openterpirnter返回1
printer.devicename 返回\\others_computer_name\printer_name
pprinterhdc返回一随机值。
但我的打印机一直没反映。(打印机是网络上的,可以打印)
toerdo 2003-02-11
  • 打赏
  • 举报
回复
我都说由于特殊原因,不用printer对象啦,
作成组件时会出错,(用在asp里)
13161795500 2003-02-11
  • 打赏
  • 举报
回复
何必那么费劲?
Printer.CurrentX=10
Printer.CurrentY=10
Printer.Print "adds"
就可以了。VB很简单,别搞复杂了。一看你就搞VC出身的!
toerdo 2003-02-11
  • 打赏
  • 举报
回复
补充:openprinter 返回值是1
toerdo 2003-02-11
  • 打赏
  • 举报
回复
现在好象编译通过了,但我用(申明过了)
api里的gdi32 的textout pPrinterHdc,10,10,"adds",4
却只是在表单上显示adds,tell me why?
thx!
toerdo 2003-02-11
  • 打赏
  • 举报
回复
还是出现“用户定义类型不能用”
我想是它的初值吧
但我不知道如何给它赋值啊,也不知该给它什么值?
13161795500 2003-02-11
  • 打赏
  • 举报
回复 1
dim pDef as PRINTER_DEFAULTS
然后再用

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧