сопоставление сетевых принтеров c # - PullRequest
0 голосов
/ 01 февраля 2012

Возможно ли получить путь к сетевому принтеру, используя следующее соглашение в C #

имякомпьютер \ имя_принтер

PrinterSettings.Installed Printer выдает имя принтера, но не информацию о пути.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 05 февраля 2013

Быстрый и грязный способ получить эту информацию - использовать библиотеку IWshRuntimeLibrary (wshom.ocx).

WshNetwork network = new WshNetwork();
var printers = network.EnumPrinterConnections();
for (int i = 0; i < printers.Count(); i += 2)
{
     Console.WriteLine(printers.Item(i) + " \t" + printers.Item(i+1));
}

... Но более перспективный подход был быиспользовать информацию, содержащуюся в структуре PRINTER_INFO_2 Уинспула, которая возвращается из метода GetPrinter .

http://www.pinvoke.net/default.aspx/Structures/PRINTER_INFO_2.html

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162845%28v=vs.85%29.aspx

http://www.pinvoke.net/default.aspx/winspool.getprinter

http://msdn.microsoft.com/en-us/library/windows/desktop/dd144911%28v=vs.85%29.aspx

1 голос
/ 01 февраля 2012

Это работает для отображения принтера. вам нужно обязательно добавить IWshRuntimeLibrary в качестве ссылки:

    using IWshRuntimeLibrary;
    private void MappPrinter()
    {
        WshNetwork oNetwork = new WshNetwork();
        oNetwork.AddWindowsPrinterConnection("\\\\computername\\printername", "HPLJ6000","\\\\computername\\printername");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...