none
C# Печать изображения через Windows RRS feed

  • Вопрос

  • Здравствуйте! 
    Меня интересует ключ, помогающий избавиться от очереди печати при использовании команды печати силами Windows shimgvw.dll.

    Код:

    var p = new Process
                {
                    StartInfo =
                    {
                        FileName = "rundll32",
                        Arguments = "shimgvw.dll,ImageView_PrintTo \"" + Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + 
                        sourceRes + "\" \"" + LocalPrintServer.GetDefaultPrintQueue().FullName + "\"",
                        RedirectStandardOutput = true,
                        UseShellExecute = false,
                        CreateNoWindow = true
                    }
                };
                p.Start();
                p.WaitForExit(20000);


    18 февраля 2016 г. 7:51

Все ответы

  • Здравствуйте,

    Если просто необходимо очистить очередь, можно использовать: https://msdn.microsoft.com/en-us/library/system.printing.printqueue.purge%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    19 февраля 2016 г. 7:53
    Модератор
  • А можно задать ключ, чтобы она автоматически очищалась? У меня просто принтер может быть недоступен, поэтому очередь печати лучше бы удалять, чтобы он при подключении не печатал бы не напечатанное.
    19 февраля 2016 г. 8:28
  • Я не совсем уверен, что вы понимаете под автоматически. При каком событии должна очередь очиститься? И что для вас является ключом?

    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    19 февраля 2016 г. 14:21
    Модератор
  • Просто я делаю инстамат. У него есть встроенный принтер для распечатки фотографий из соцсетей. Если принтер по каким-либо причинам выключится или выйдет из строя предпочтительней было бы, чтобы  он не печатал предыдущие введенные фотографии из очереди печати, которые у него не получилось до этого распечатать предыдущим своим клиентам.


    20 февраля 2016 г. 11:14
  • В Интернете я нашёл файл cmd (запускать от имени администратора):

    net stop spooler
    del /f /q %systemroot%\system32\spool\printers\*.shd
    del /f /q %systemroot%\system32\spool\printers\*.spl
    net start spooler

    и bat-файл (запускать от имени администратора):

    net stop spooler
    IF EXIST "\Windows\System32\spool\PRINTERS\" del "\Windows\System32\spool\PRINTERS\*.*" /f /s /q 
    net start spooler

    Но часть кода проглатывается в C# и не срабатывает, хотя странно: эти два файла рабочие.

    В одном случае срабатывает только первая строчка когда очередь пуста, а во втором случае при любом количестве очередей только 1-я и 3-я. 

    25 февраля 2016 г. 11:47