none
プリンタのモデル番号と製造元の取得 RRS feed

  • 質問

  • こんにちは。

    PCに接続しているプリンタのモデル番号と製造元をC#のプログラムで取得する方法を教えてください。

    取得したい情報は、画面上では下記の場所に表示されている文字列です。

    [デバイスとプリンター] > プリンタを右クリックして[プロパティ] > [全般]タブ > [デバイス情報] > [製造元:]

    [デバイスとプリンター] > プリンタを右クリックして[プロパティ] > [全般]タブ > [デバイス情報] > [モデル番号:]

    WMI(Win32_Printer/Win32_PrinterDriver)やレジストリからはその文字列を見つけることができませんでした。。

    何卒よろしくお願い致します。

    2018年12月23日 3:56

すべての返信

  • 訂正:12/23 15:26 よくみたら以下のコードだと一致しなかった

    ******
    こんな?

    namespace ConsoleApp1
    {
        using System;
    
        class Program
        {
            static void Main(string[] args)
            {
                using (var mc = new System.Management.ManagementClass("Win32_Printer"))
                {
                    using (var printers = mc.GetInstances())
                    {
                        foreach (System.Management.ManagementObject mo in printers)
                        {
                            using (mo)
                            {
                                var name = ((string)mo.Properties["Name"].Value);
                                Console.WriteLine(name);
    
                                using (var searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE PNPClass = 'PrintQueue' AND Name ='" + name.Replace(@"\", @"\\") + "'"))
                                {
                                    using (System.Management.ManagementObjectCollection pnps = searcher.Get())
                                    {
                                        foreach (System.Management.ManagementObject mopnp in pnps)
                                        {
                                            foreach (System.Management.PropertyData data in mopnp.Properties)
                                            {
                                                Console.WriteLine("\t" + data.Name + "\t" + data.Value);
                                            }
                                        }
                                    }
                                }
                            }
    
                            Console.WriteLine();
                            Console.WriteLine("**********************");
                        }
                    }
                }
    
                Console.ReadLine();
            }
        }
    }


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2018年12月23日 6:25
    2018年12月23日 6:15
  • gekka様

    ご返信ありがとうございます。

    訂正としてご記載いただいております通り、

    取得したい製造元名やモデル番号は、WMIやレジストリにあるManufacturerやドライバ名、プリンタ名とは微妙に違うのですよね。。


    2018年12月23日 6:40