Следующий фрагмент кода должен работать, но у него есть проблема, которая может быть дело выключатель (продолжить чтение для объяснения):
static void Main(string[] args)
{
string pathToFile = "...";
var processStartInfo = new ProcessStartInfo();
processStartInfo.Verb = "print";
processStartInfo.FileName = pathToFile;
var process = Process.Start(processStartInfo);
process.WaitForExit();
}
только проблема с приведенным выше кодом заключается в том, что он отобразит диалоговое окно печати. Мне не удалось найти способ подавить его, и это, похоже, проблема (или функция), характерная для печати файлов HTML.
Существует уродливое обходное решение, если вы можете терпеть появление диалогового окна печати в течение секунды или около того, и это должно имитировать отправку ключа «ввести» в диалог печати через код. Самый простой способ сделать это - использовать класс System.Windows.Forms.SendKeys
, в частности метод SendWait
.
Таким образом, пересмотренный фрагмент код будет выглядеть следующим образом:
static void Main(string[] args)
{
string pathToFile = "...";
var processStartInfo = new ProcessStartInfo();
processStartInfo.Verb = "print";
processStartInfo.FileName = pathToFile;
var process = Process.Start(processStartInfo);
System.Threading.Thread.Sleep(1000);
System.Windows.Forms.SendKeys.SendWait("{ENTER}");
process.WaitForExit();
}
Вызов к Sleep
необходим для того, чтобы диалог печати полностью загружен и готов к приему ввода данных пользователя перед отправкой нажатия клавиши.
HTH
Что происходит, когда вы пишете, из cmd.exe, "print file.html"? (Убедитесь, что вы вошли в систему как один и тот же пользователь, который запускает ваш код). –
В нем говорится: «Не удалось инициализировать устройство PRN» – Saeed
Я распечатаю html-файл. – Saeed