Мне нужно распечатать html-файл, когда пользователь нажимает кнопку печати, и он работает нормально (запрашивает диалоговое окно печати), когда я устанавливаю браузер по умолчанию как IE. Если я изменю браузер по умолчанию на chrome или firefox, отличный от IE, код не запрашивает диалоговое окно печати, а просто открывает html-файл в браузере. Не могли бы вы сообщить мне, какую конфигурацию я пропустил в приведенном ниже коде?
string TempFile = @"D:\test.html";
ProcessStartInfo Params = new ProcessStartInfo();
Params.FileName = "iexplore.exe";
Params.Arguments = TempFile;
Params.UseShellExecute = false;
Params.Verb = "print";
Params.WindowStyle = ProcessWindowStyle.Hidden;
Params.CreateNoWindow = true;
Process.Start(Params);
Я пытаюсь без использования элемента управления WebBrowser. На самом деле я не хочу запускать браузер, вместо этого хочу открыть диалоговое окно печати. Я пробовал со следующим кодом. ProcessStartInfo Params = new ProcessStartInfo(); Params.FileName = TempFile; Params.UseShellExecute = true; Params.Verb = "Print"; Process.Start(Params);
Однако этот код работает, только если браузер по умолчанию установлен на IE.
Можно ли всегда печатать файл через IE, даже если Chrome используется в качестве браузера по умолчанию? В этом случае даже не нужно проходить реестр, достаточно поставить name = "iexplore.exe"
. Это, очевидно, не будет работать, если IE не установлен.
Нет, это не специфично для IE. Система должна печатать страницу, когда пользователь устанавливает какой-либо браузер по умолчанию. Если вы видите код в моем предыдущем комментарии, я не указал данные браузера.
Наконец-то я получил решение этой проблемы. Приведенный ниже код работает как шарм!
using (Process exeProcess = new Process())
{
string TempFile = @"D:\test.html";
exeProcess.StartInfo.FileName = "rundll32";
exeProcess.StartInfo.Arguments = @"system32\mshtml.dll,PrintHTML """ + TempFile + @"""";
exeProcess.StartInfo.UseShellExecute = true;
exeProcess.Start();
}
Работал как шарм и в моем приложении .NET Core
.
Вы пробовали распечатайте этот файл, используя элемент управления
WebBrowser
? Вы пытаетесь запустить браузер из командной строки, и это не работает, поскольку я ожидаю, что разные браузеры будут иметь разные аргументы командной строки. Технически вы можете установить различные аргументы на основеname
(например,if (name= = "chrome.exe"){
), но это звучит громоздко.