Следующий фрагмент кода должен работать, но у него есть проблема, которая может нарушить условия сделки (читайте объяснение):
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