1个回答
展开全部
1楼 GetWindowPos(阿汪) 回复于 2003-07-06 22:55:37 得分 20 我的一个朋友编过这样的程序,他是用来卖给公司一些混饭吃的人, 好让他们能过老板那关,并且自己也从中获得利益 我刚好今天看望它,随便看了看它的代码,并不很长, 记得了用了5个和打印记有关的API, 其实知道用什么API后这个程序可以说是没有难度 Top 2楼 cliving() 回复于 2003-07-06 23:03:27 得分 0 靠!大概我就是你说的那一类混饭吃的人! 可是你的朋友没有能够卖给我! 你知道了api为什么不告诉我? 卖关子,还是要“获得利益”? 我无话好说@#¥#!@¥!! Top 3楼 GetWindowPos(阿汪) 回复于 2003-07-07 08:55:30 得分 20 你以为我过目不忘?我只是刚好去看望它又刚好看到了它的程序, 然后一回家就看到你问这个问题了,这也算是缘分吧, 就顺道跟你说说,代码虽说不是很长, 但密密码码一大堆你能看一眼就记全?而且API又不是IF, CASE,WHILE这些常用的命令,声明起来动不动就几大行, 你能看一眼就说出来 ? 与其“靠”别人不如靠靠你自己吧 Top 4楼 alicky(周松) 回复于 2003-07-07 09:24:30 得分 20 Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long Private Sub Form_Load() Dim hPrinter As Long, lNeeded As Long, lReturned As Long Dim lJobCount As Long OpenPrinter Printer.DeviceName, hPrinter, ByVal 0& EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned If lNeeded > 0 Then ReDim byteJobsBuffer(lNeeded - 1) As Byte EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned If lReturned > 0 Then lJobCount = lReturned Else lJobCount = 0 End If Else lJobCount = 0 End If ClosePrinter hPrinter If lJobCount = 0 Then MsgBox "没有打印作业!" Else MsgBox "打印队列项: " + CStr(lJobCount), vbInformation End If End Sub Top 5楼 cliving() 回复于 2003-07-07 10:16:55 得分 0 多谢二位!我有空试试,阿汪误会误会!我真以为你是神眼了! To p 6楼 cliving() 回复于 2003-07-11 21:58:27 得分 0 我查了一下,这个问题好像很复杂。 问题的要求是怎样知道打印作业是否已被打印机完成, 或者因为缺纸等原因失败。 周松提出的方法是查打印机中的作业的打印状态。 这个方法也许可行。得到打印机作业状态的函数有两个: GetJob 和EnumJobs.这两个函数使用起来好像有些复杂, 其中返回的一个参数是Job_info_2结构变量。 这里面也许包含了作业状态信息。 但是这个结构是什么样的,我不知道,有网友推荐以下的内容 http://support.microsoft.com/ default.aspx?scid=http:// support.microsoft.com:80/ support/kb/articles/Q160/1/29. asp&NoWebContent=1 可是这个功能是C写的,我不知道vb怎么实现。 除了这种查询打印机作业状态的方法,还有没有别的更简单的方法? 也许没有了吧? 那么究竟该怎么得到我刚才由DataReport发出的这个作业 的id,又怎么从api返回的job_info_ 1参数中得到打印机状态呢? 请教高手!请教高手!! Top 7楼 liao1234(liao) 回复于 2003-07-17 11:24:53 得分 40 ReadPrinter VB声明 Declare Function ReadPrinter Lib "winspool.drv" Alias "ReadPrinter" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pNoBytesRead As Long) As Long 说明 从打印机读入数据 返回值 Long,非零表示成功,零表示失败。 会设置GetLastError 参数表 参数 类型及说明 hPrinter Long,一个已打开的打印机的句柄( 用OpenPrinter获得) pBuf Any,指定一个缓冲区或结构,用于装载来自打印机的数据 cdBuf Long,欲读入的缓冲区大小或字节数 pNoBytesRead Long,用于装载实际读取字节数的一个变量 注解 为使这个函数正常使用,端口必须是双向的!!!!!!!!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询