这两天真是不顺利,首先是昨天模块软件的事情,今天结果又是对方人员说我们组成的数据帧正确,她测试也OK,结果我们自己无论怎么发送就是不行。 然后又是那个传真软件的事情,简直令我抓狂。好端端的一个程序,外部调用后再内部调用打印,结果WIN2K就是报告找不到打印机,WINXP就是可以,还有一个头疼的,我的是WINXP,测试OK,让同事WIN2K帮我测试,告诉我OK,然后我就气势汹汹地冲到报告人那里,以为重装软件,重装打印机驱动,或者SFC /SCANNOW /SCANNOW 立即扫描所有受保护的系统文件。 应该可以解决,结果折腾了半天还是屡次出现,唯一的收获是找到一个不同之处: 如果先运行软件,那么无论是外部调用打印还是内部调用打印,均OK,但是一旦先外部调用,那么内部调用肯定失败。 然后回来再到同事那里一运行,也是一样的效果,我简直无话可说。一问他为什么刚才说可以,他就说我也不知道啊。什么世道?!又不是刚出道的学生,好歹也是一个硕士,年纪也不小了,只好把火气憋住了。不禁怀念那个辞职的同事。 所谓内部调用,就是软件本身模拟了一个资源管理器,选择文件进行发送;外部调用是指直接从外部程序如WORD打印到传真打印机。 做了三个测试版本,非常奇怪的是:显示代码走到PRINTERS.COUNT判断的时候就说明数目为0。可是系统明明有两个打印机。使用COMMONDIALOG.SHOWPRINTER显示却有两个打印机。 回来自己安装了一个WIN2K,调试了一下,的确一外部调用,从程序运行开始就是0了。 Printers 集合可用来查询可用的打印机,这样就可以为应用程序指定一台缺省打印机。例如也许要找出哪些可用打印机用了指定的打印驱动程序。下面的代码查找所有的可用打印机,定位在第一个将页码方向设置为纵向的打印机,然后将其设置为 Portrait。 Dim X As Printer 调用方式:WINWinExec(strExe,SW_SHOW); The WinExec function runs the specified application. This function is provided for compatibility with 16-bit Windows. Win32-based applications should use the CreateProcess function If Printers.Count > 0 Then 调试结果就是报告数目为0,BRNS为FALSE,然后自然就是报告找不到打印机。活活郁闷~~~~~ 字体:大 中 小 |
![]() | 永久地址 http://www.shengfang.org/blog/p/prtwinexeccnt.php |
![]() | 引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1122036817 |
2005年7月22日20:53星期五 [Dev开发]





