Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
          "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As _
          Long, pDefault As Any) As Long  If OpenPrinter(strPrnName, hPrinter, pd) Then
  ....
  else  end if
  调用老是返回0,我的打印机是网络共享的。
  请求高人指点!

解决方案 »

  1.   

    API调用和参数有很大关系的,而你这里把参数全都略去了,我无法判断你那里有错。
      

  2.   

    If OpenPrinter(strPrnName, hPrinter, pd) Then
      ....
       OpenPrinter=1  '成功则返回1
      else
       OpenPrinter=0  '失败则返回1,如果不给函数赋值默认是0
      end if
      

  3.   

    Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
              "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As _
              Long, pDefault As Any) As Long
    .........................Private Type PRINTER_DEFAULTS
              pDataType   As String
              pDevMode   As Long
              DesiredAccess   As Long
      End TypeDim strPrnName     As String 
    Dim hPrinter     As Long
    Dim pd     As PRINTER_DEFAULTSstrPrnName = Printer.DeviceName
    还有打印机的权限是够了,局域网也没问题。  If OpenPrinter(strPrnName, hPrinter, pd) Then
      ....
      else  end if
     调用之后老是返回0,不知道哪里错了,请高人指点
      

  4.   

    pd是in型参数,要么你把pd那里换成0,要么把pd里的各项数据通通赋上正确的值
      

  5.   

    先用word打印一下,确保存你的机子能通过网络打印。如果没有问题就是你程序有问题了。
    我猜测是strPrnName不正确。你用断点看一下,网络打印机是要有网络路径的。