0

ラップトップにインストールされているプリンターの IP アドレスを見つける必要があります。ラップトップを異なる場所とネットワーク間で移動します。各ネットワークには独自の IP アドレスのセットがあります。ラップトップには、場所ごとに異なるプリンターがインストールされており、すべての接続はワイヤレスで行われます。

以下のコード (.net 4.0) を使用すると、QueuePort.Name は次を返します。

WSD-27e3f972-cdc7-459d-b0c1-20e8410fb1db.0032 および

192.168.1.12_1

これらはネットワーク プリンターなので、実際の IP アドレスに解決する必要があると思いますか??

どこが間違っていますか?それとももっと良い方法がありますか?どんな助けでも本当に感謝しています。

 IEnumerable<Printer> GetLocalPrinters()
    {
        EnumeratedPrintQueueTypes[] enumerationFlags = { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections };
        LocalPrintServer printServer = new LocalPrintServer();

        var x = printServer.GetPrintQueues(enumerationFlags).Select(y =>
            new Printer
            {
                Fullname = y.FullName,          
                QueuePortName = y.QueuePort.Name,
                Location = y.Location
            })
            .OrderBy( z => z.QueuePortName);

        return x;

    }
4

2 に答える 2

2

ポート名は IP アドレスではありません。時にはそれらは同じテキストです。

彼らの答えはここにあるようです: C# でプリンターの IP アドレスを決定する

2011 年 10 月 31 日編集:

プリンター ポートの IP アドレスを WMI に照会します。

using System;
using System.Management;

namespace WMI_example_01
{
    class Program
    {
        static void Main(string[] args)
        {
            var scope = new ManagementScope(@"\\.\root\cimv2");
            var query = new ObjectQuery("SELECT * FROM win32_tcpipprinterport");
            var searcher = new ManagementObjectSearcher(scope, query);
            var collection = searcher.Get();

            foreach(var col in collection)
            {
                Console.WriteLine("Port name: {0}\tHostAddress: {1}", col["Name"], col"HostAddress"]);
            }
        }
    }
}
于 2014-10-29T10:11:15.043 に答える