2

私がやろうとしていること:

コンピューターにインストールされているすべてのプリンターのデータベースを作成しています。

を使用PrinterSetting.PrinterNamePrinterSettings.InstalledPrintersて取得してPrinterNameいます。

winapi も試しましWin32_Printerたが、これと上記のコードには問題があります。

問題

問題は、HP LasetJet 1020、HP LasetJet 1020 (コピー 1)、HP LasetJet 1020 (コピー 2) などのように、1 つのプリンターを異なる名前でインストールできることです。プリンター名はユーザー定義で、任意の名前にすることができます。1 つのプリンターが 2 つの異なる名前でインストールされている場合でも、名前に類似性はありません。

そのため、1 つのプリンターが異なる名前でインストールされていても、プリンターのモデル名は一意である必要があると思います。

質問:

そのプリンターモード名を抽出する方法は? または、一意であり、ユーザーが編集できず、プリンターの識別に使用できる Win_32 のその他のプロパティである可能性があります。

また

これにはレジストリが役立つ場合があります。このモデル情報がレジストリにある場合 (ほとんどの場合)、どこにありますか?

4

2 に答える 2

1

プリンタードライバー名とポート名の組み合わせは、特定のプリンターの唯一の一意の識別子を形成します。2 つのプリンター間でドライバーとポート名が一致する場合、それらのプリンターは両方とも同じ物理 (または仮想) ハードウェアを表します。それらを確実に識別する他のプロパティはありません。

于 2012-06-19T14:22:12.790 に答える
0

私は WMI でこれに取り組みたいと思います。その方法でもう少し情報があるようです。

CodeProject にはまともなウォークスルーがありますが、これを具体的に扱ったとは言えません。

http://www.codeproject.com/Articles/80680/Managing-Printers-Programatically-using-C-and-WMI

于 2012-06-19T13:25:54.693 に答える