2015-06-10 4 views
2

Значения я могу ENUM все принтеры (сетевые и локальные), но только если они установлены на моем компьютереСписка (не установлено, а)

Однако я хочу, чтобы иметь возможность перечислить те, которые не установлены и их можно увидеть, используя диалоговое окно ADD PRINTER (окна).

Возможно ли это, поскольку я не нашел ничего полезного в просмотре различных форумов/плат, включая stackexchange.

Значение Я попробовал встроенные классы .NET и WMI (SELECT * from Win32_Printer), но, очевидно, они перечисляют только установленные принтеры.

Большое спасибо заранее

EDIT: Пожалуйста, обратите внимание, что предложенный ответ не решает, не установленные принтеры, а скорее только установленные из них. Я уже могу их перечислить. Thx

+0

Возможно, вы захотите более четко указать, в каком «предлагаемом ответе» вы говорите. –

+0

[link] http://stackoverflow.com/questions/1018001/is-there-a-net-way-to-enumerate-all-available-network-printers [/ link] –

+0

Привет, я верю, что это Решение: [link] (http://stackoverflow.com/a/40569268/6513653) – ViniCoder

ответ

0

Я не верю, что в .NET есть что-то в этом роде, вам нужно будет сделать собственный звонок. Here is the MSDN page о том, как перечислять сетевые ресурсы, что вам нужно сделать, это P/Invoke WNetEnumResource, чтобы получить NETRESOURCE объектов назад.

Вы ищете объекты, которые имеют dwType от RESOURCETYPE_PRINT, когда вы их найдете, вы проверяете lpRemoteName, чтобы получить имя принтера.

Ссылка на a example snippet Внедрение ее использования (Несмотря на то что URL-адрес указывает, что код VB находится на C#). Я бы разместил его здесь, но заметка на странице явно не позволяет копировать и вставлять скрипт без разрешения автора.

+0

Большое вам спасибо за это ... это выглядит очень многообещающим, и я собираюсь протестировать предлагаемый код. Будем держать вас в курсе. Еще раз спасибо –

+0

Хм, я думаю, я не могу скомпилировать этот код. Я получаю некоторые ошибки (метод должен иметь тип возврата) в строке: // теперь вызываем функцию, передающую нуль WNETOE (null); –

+0

Я смог скомпилировать проект. Работал нормально, хотя я не совсем уверен, как перечислять только принтеры. Я буду продолжать анализировать код. Thx –

Смежные вопросы