Как найти и установить принтер в той же сети WiFi? - PullRequest
0 голосов
/ 13 мая 2019

в моем приложении (win10, WPF) я даю пользователю возможность распечатать отчет.
НО
, когда на ЛОКАЛЬНОМ аппарате еще не настроен принтер - этоневозможно.
(разумеется, что принтер активирован в сети, и с помощью settings -> add printer & sccaners он найден и устанавливается)

Я искал в сети несколько дней, ища способto:
1.
использовать ManagementObjectSearcher("SELECT * from Win32_Printer")
, но получил только localy установленные параметры печати

2.

пробовал следующий код - ноя не знаю имя сервера или принтера
(я могу знать имя сети, в которой пользователь запускает мое приложение - но это может быть принтер любого типа ...)

using (ManagementClass win32Printer = new ManagementClass("Win32_Printer"))
{
    using (ManagementBaseObject inputParam = win32Printer.GetMethodParameters("AddPrinterConnection"))
    {
        // Replace <server_name> and <printer_name> with the actual server and
        // printer names.
        inputParam.SetPropertyValue("Name", "\\\\<server_name>\\<printer_name>");

        using (ManagementBaseObject result =
            (ManagementBaseObject)win32Printer.InvokeMethod("AddPrinterConnection", inputParam, null))
        {
            uint errorCode = (uint)result.Properties["returnValue"].Value;

            switch (errorCode)
            {
                case 0:
                    Console.Out.WriteLine("Successfully connected printer.");
                    break;
                case 5:
                    Console.Out.WriteLine("Access Denied.");
                    break;
                case 123:
                    Console.Out.WriteLine("The filename, directory name, or volume label syntax is incorrect.");
                    break;
                case 1801:
                    Console.Out.WriteLine("Invalid Printer Name.");
                    break;
                case 1930:
                    Console.Out.WriteLine("Incompatible Printer Driver.");
                    break;
                case 3019:
                    Console.Out.WriteLine("The specified printer driver was not found on the system and needs to be downloaded.");
                    break;
            }
        }
    }
}

после установки привода принтера (из windows add printers & scanners) я получил mac-адрес принтера, затем даже после деинсталляции я мог получить его ' IP-адрес (как предложено здесь )

Ничто из перечисленного не помогло мне ...

, поэтому я ищу любойВозможный способ установки нового принтера программно - например:

  1. запуск PrintDialog с опцией «добавить новый принтер»
  2. , откройте окно windows settings с помощью printers & scanners screen
    обнаружил, что: Process.Start("ms-settings:printers");
  3. установите новый принтер, используя любую из указанных выше данных
  4. сделайте это любым другим способом ..........:)

1 Ответ

0 голосов
/ 14 мая 2019

другое дело - как @SajithSageer предложил в комментариях выше ( на основе этой ссылки ):

я удалил 1 из 2 моих сетевых принтеров , 1 HP и 1 пушку - которые оба были найдены в моей сети WiFi и также установлены оттуда, и получили следующие результаты:
1. ни один из них не «ОБЩЕН» - они всегда «МЕСТНЫ»
2. когда пушка подключена - она ​​также появляется на «EnableBidi»
3. EnumeratedPrintQueueTypes = 512 не существует - но дает результаты :)

вот код:

            for (int i = 0; i < 20; i++)
            {
                EnumeratedPrintQueueTypes[] enumerationFlags = { (EnumeratedPrintQueueTypes)Math.Pow(2,i)};

                LocalPrintServer printServer = new LocalPrintServer();

                //Use the enumerationFlags to filter out unwanted print queues
                PrintQueueCollection printQueuesOnLocalServer = printServer.GetPrintQueues(enumerationFlags);

                Console.WriteLine("These are your shared, local print queues:\t {0}\n---------------------------\n", enumerationFlags[0]);

                foreach (PrintQueue printer in printQueuesOnLocalServer)
                {
                    Console.WriteLine("\t" + printer.Name );
                }
                Console.WriteLine();
            }

вот результаты:

These are your shared, local print queues:       Queued
---------------------------


These are your shared, local print queues:       DirectPrinting
---------------------------


These are your shared, local print queues:       4
---------------------------


These are your shared, local print queues:       Shared
---------------------------


These are your shared, local print queues:       Connections
---------------------------


These are your shared, local print queues:       32
---------------------------


These are your shared, local print queues:       Local
---------------------------

        OneNote
        Send To OneNote 2016
        Microsoft XPS Document Writer
        Microsoft Print to PDF
        HP872916 (HP OfficeJet Pro 7740 series)
        Fax - HP OfficeJet Pro 7740 series
        Fax

These are your shared, local print queues:       EnableDevQuery
---------------------------


These are your shared, local print queues:       KeepPrintedJobs
---------------------------


These are your shared, local print queues:       512
---------------------------

        Send To OneNote 2016
        Microsoft XPS Document Writer
        Microsoft Print to PDF
        HP872916 (HP OfficeJet Pro 7740 series)

These are your shared, local print queues:       WorkOffline
---------------------------


These are your shared, local print queues:       EnableBidi
---------------------------


These are your shared, local print queues:       RawOnly
---------------------------


These are your shared, local print queues:       PublishedInDirectoryServices
---------------------------


These are your shared, local print queues:       Fax
---------------------------

        Fax

These are your shared, local print queues:       TerminalServer
---------------------------


These are your shared, local print queues:       65536
---------------------------


These are your shared, local print queues:       PushedUserConnection
---------------------------


These are your shared, local print queues:       PushedMachineConnection
---------------------------


These are your shared, local print queues:       524288
---------------------------


Press enter to continue.
...