現在、プリンタポートを次のように取得しています。
For Each defPrinter In Printers
If defPrinter.DeviceName = "あるプリンタ名" Then
pb_pdforigin = defPrinter.Port
End If
Next
Windows98ではうまくいくのですが、WindowsXPではうまくいきません。
ポートが"Ne02"となってしまっています。
98とXPでは取得の仕方が違うのでしょうか?
環境 VB5.0
>ポートが"Ne02"となってしまっています。
XPにインストールしたプリンタのポートがNe02となっているからじゃないですか?
当該プリンタのプロパティを表示して使用ポートを調べて見てください。
くまさん、返答ありがとうございます。
当該プリンタ(Acrobat Distiller)のポートは
ローカルディレクトリ\*.pdfとなっています。
Printersコレクションからプリンタを取得して
ポートを表示してみると、順番にNe00,Ne01,Ne02・・・
みたいになっているようです。
APIを使わなければうまくいかないのでしょうか?
できれば、今のままであまりかえたくないのですが・・・
(わがままですが)
あ、しゅとっく=もじおですので。
プリンタのプロパティに表示されているポートの名前が
内部的には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
くまさんご返答ありがとうございました。
教えていただいたコードを元にやってみます。
私からはかなりの亀レスであったのに、大変丁寧なご返答を
頂きまして、本当にありがとうございました。
ツイート | ![]() |