peter wallington Ответов: 1

Может ли кто-нибудь помочь мне получить файл для печати с помощью processinfo


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


Тусклая информация как система.Диагностика.ProcessStartInfo = Новая Система.Диагностика.ProcessStartInfo(strFiles(i).Метод toString)
Дим ДПН в виде строки = DefaultPrinterName()
информация.Аргументы = Chr(34) + dpn + Chr(34)
информация.CreateNoWindow = True
информация.WindowStyle = Система.Диагностика.ProcessWindowStyle.Скрытый
информация.Значение Свойства Useshellexecute = Истина
информация.Глагол = "print"

Ничто из того, что я пытаюсь сделать, не позволяет автоматически выбрать принтер. Я подумал, что это может быть проблема с драйвером принтера, поэтому даже попытался изменить принтер по умолчанию на физический принтер, но это тоже не сработало.

Что я уже пробовал:

1. попробовал настоящий принтер
2. удалена информация .arguments
3. изменил его, чтобы отобразить окно (затем он отобразил принтеры с выделенным по умолчанию запросом на нажатие кнопки ОК.
4. попробовал глагол "printto"

Maciej Los

Какой файл вы хотите распечатать?

Dave Kreskowiak

Что это за приложение, которое делает печать? Вы только говорите приложению открыть и распечатать файл. У вас есть нулевой контроль над тем, как это приложение делает это. Если приложение все еще хочет показать диалоговое окно печати, вы не можете его изменить.

peter wallington

Спасибо, Дэйв, я понимаю. Я пытаюсь найти способ преобразования различных типов файлов в PDF без каких-либо взаимодействий с пользователем.

1 Ответов

Рейтинг:
2

Maciej Los

Я не могу воспроизвести вашу проблему. Я использовал ваш код с небольшими изменениями:

Dim info As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo("D:\data.txt")
With info
    .CreateNoWindow = True
    .WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
    .UseShellExecute = True
    .Verb = "print"
End With
Process.Start(info)'start printing

Приведенный выше код работает нормально и печатает текстовый документ на принтере по умолчанию.
Кажется, вы забыли запустить процесс.


Richard Deeming

Я предполагаю, что проблема может заключаться в том, что "принтер по умолчанию" для приложения не установлен в качестве системного принтера по умолчанию. :)

Maciej Los

Наверное, ты прав, Ричард. ;)