Как я могу распечатать файлы HTML на указанном принтере, используя shellexecute? - PullRequest
1 голос
/ 03 марта 2011

У меня есть приложение, у которого есть записи, с которыми может быть связано несколько вложений, которые могут быть коллекцией файлов JPG, TIF, PDF или HTM (теоретически этот список произвольный, и это наиболее типичные типы) .

Одно из действий, которые мне нужно выполнить, - разрешить их печать в массовом порядке на конкретном принтере.

Для большинства типов файлов я могу эмулировать оболочку и выполнять те же действия, что и при перетаскивании файла и переносе его на принтер в проводнике, используя глагол «PrintTo» и ShellExecute (через ProcessStartInfo) ; тем не менее, я некоторое время ломал голову, размышляя, почему это не работает для файлов HTM - вместо этого он всегда предлагает выбрать принтер для каждого файла, даже если для этого есть параметры реестра.

Это когда я вернулся к первым принципам и проверил, работает ли оболочка «правильно», когда я обнаружил, что она ведет себя так же (так, скажем, вы перетаскиваете любой старый файл HTML на принтер в проводник, он всегда запрашивает печать, по умолчанию принтер является вашим принтером по умолчанию, , даже если это не тот принтер, на который вы сбросили файл )

Теперь, похоже, это поведение было введено в IE7 (умышленно или нет, я не уверен); но есть ли способ заставить это работать так, как ожидалось?

РЕДАКТИРОВАТЬ: Это для внутреннего приложения, поэтому было бы допустимо исправить реестр , если это будет работать.

1 Ответ

1 голос
/ 03 марта 2011

Вы можете использовать элемент управления webbrowser и вызвать метод .Print ().Я только что проверил это, и это пошло прямо к моему принтеру по умолчанию, не спрашивая меня.Я знаю, что это не может быть идеальным, но я думаю, что это должно сделать работу.

...