当前位置:编程学习 > VB >>

指定默认打印机打印问题!!!!!!

    非常谢谢你上次给我的关于指定打印机打印问题的代码。我当时试的是连接在同一台电脑上的两台打印机(只是安装了驱动,没有物理打印机),这样没有问题,但是现在软件正式开始使用了,有一台没有连接在本台电脑上,好象不行,修改不了默认打印机。这是怎么回事呢???以下是实际的两台物理打印机。

Private Sub DataReport_Initialize()
    Call SetDefaultPrinter("\\EPSON LQ-1600KIII")
End Sub
此台打印机是网络上其他电脑上安装的,我写成 Call SetDefaultPrinter("\\EPSON LQ-1600KIII")或者 Call SetDefaultPrinter("EPSON LQ-1600KIII")或者 Call SetDefaultPrinter("\\WK2\EPSON LQ-1600KIII")也不行,但是这台打印机如果是安装本台电脑上的就没有问题。

Private Sub DataReport_QueryClose(Cancel As Integer, CloseMode As Integer)
    Call SetDefaultPrinter("EPSON LQ-630K")
    End
End Sub
EPSON LQ-630K打印机是连接在本台电脑上的
还有就是顺便问一下:Call SetDefaultPrinter("\\PC1EPSON LQ-680K ESC/P 2")
中的PC1EPSON LQ-680K ESC/P 2应该只是打印机名称吧?需要指定是哪台电脑安装的吗?必须要用\\这个符号吗(是网络路径吗)?
****我本想把这两台打印机都连接在同一电脑上,但是受办公条件和位置的影响,EPSON LQ-1600KIII不能连接在该台电脑上。
--------------------编程问答-------------------- 引用WINDOWS SCRIPT HOST OBJECT MODEL
添加 2个按钮1个listbox
Option Explicit
Private Sub Command1_Click()
 Dim a As Printer
 For Each a In Printers
  List1.AddItem a.DeviceName
 Next
End Sub

Private Sub Command2_Click()
  Dim ps As String
  Dim wn As New WshNetwork
  ps = List1.List(List1.ListIndex)
  Debug.Print ps
  wn.SetDefaultPrinter ps
End Sub
--------------------编程问答-------------------- 你的问题主要是你参数不正确,网络打印机有一个共享名称,你要输入这个共享名称才行。你可以参考楼上小刀的代码,List1中就是本机所有打印机名称,包括网共享打印机名称 --------------------编程问答-------------------- 还有,按我的经验,你的这个系统,不能将打印机名称固定写在代码中,而是应该写在配置文件中。理由很简单,不同的公司不同的打印机,这样有更好的适用性,还有即便你是自己公司用,那天换了台打印机,或者重装系统共享打印机改了名称等等,这样只要修改一下配置文件就行了。 --------------------编程问答-------------------- 谢谢您们的指点!
EPSON LQ-1600KIII是网络上另外一台电脑安装此打印机时共享出来的名称。
还有就是我在安装网络打印机的时候,就自动出现了两个名称,一个是“EPSON LQ-1600KIII 在WK2上”,另外一个是“在 WK2上 自动 EPSON LQ-1600KIII”,这两个都可以打印,你说的共享名称就应该是“EPSON LQ-1600KIII”吧?
还有就是关于配置文件问题,我最初都是这样想的,把打印机写进程序肯定是不好的,但是现在主要是只有我一个人,很多东西我也不懂,我现在主要是用VB+SQL2000做的,现在追求的只有是能用就行,效率方面慢慢改进,很多时候没有办法啊,别见笑哦。
我再试试吧,谢谢您们啦! --------------------编程问答-------------------- 你可以删除其中一个,但那个参数名称一定要完整,你参考上面小刀的代码,用Printer对象来获得准确的名称,并不一定就是“EPSON LQ-1600KIII”


Private Sub Command1_Click()
    Dim a As Printer
    For Each a In Printers
        debug.print a.DeviceName
    Next
End Sub



这样你就可以在立即窗口打印出本机所有打印机名称,复制到你代码中去 --------------------编程问答-------------------- 好的,谢谢,我再试一下!
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,