プリンタポートの取得の仕方

解決


しゅとっく  2004-09-03 23:42:21  No: 85415

現在、プリンタポートを次のように取得しています。
For Each defPrinter In Printers
    If defPrinter.DeviceName = "あるプリンタ名" Then
        pb_pdforigin = defPrinter.Port
    End If
Next

Windows98ではうまくいくのですが、WindowsXPではうまくいきません。
ポートが"Ne02"となってしまっています。
98とXPでは取得の仕方が違うのでしょうか?

環境 VB5.0


くま  2004-09-04 08:18:18  No: 85416

>ポートが"Ne02"となってしまっています。
XPにインストールしたプリンタのポートがNe02となっているからじゃないですか?
当該プリンタのプロパティを表示して使用ポートを調べて見てください。


もじお  2004-09-06 17:40:13  No: 85417

くまさん、返答ありがとうございます。
当該プリンタ(Acrobat Distiller)のポートは
ローカルディレクトリ\*.pdfとなっています。

Printersコレクションからプリンタを取得して
ポートを表示してみると、順番にNe00,Ne01,Ne02・・・
みたいになっているようです。

APIを使わなければうまくいかないのでしょうか?
できれば、今のままであまりかえたくないのですが・・・
(わがままですが)


しゅとっく  2004-09-06 17:43:31  No: 85418

あ、しゅとっく=もじおですので。


くま  2004-09-06 21:52:15  No: 85419

プリンタのプロパティに表示されているポートの名前が
内部的にはNe02というポートを使用しているだけのことです。
何かプリンタのポートを指定しなければならないコマンドを
使用する場合、Ne02を指定してやれば問題なく動作します。

WMIを使用するとご希望の名前が得られますがVBのPrinterオブジェクトで
このポート名を指定して動作するかどうかは検証していません。

  Dim strComputer As String
  Dim objWMIService As Object
  Dim colInstalledPrinters As Object
  Dim objPrinter As Object
  
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
  Set colInstalledPrinters = objWMIService.ExecQuery _
      ("Select * from Win32_Printer")
  For Each objPrinter In colInstalledPrinters
      Debug.Print "Name: " & objPrinter.Name
      Debug.Print "PortName: " & objPrinter.PortName
  Next


しゅとっく  2004-09-07 00:10:18  No: 85420

くまさんご返答ありがとうございました。

教えていただいたコードを元にやってみます。

私からはかなりの亀レスであったのに、大変丁寧なご返答を
頂きまして、本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加