GLolita Ответов: 3

Печать файлов с помощью WIN32 API


Мне нужно распечатать Мои файлы, найденные в моей SPFolder, непосредственно на принтер, не распознав тип файла, поэтому какой API Windows вызывать и как его вызывать ? Кроме того, каков процесс запуска задания печати, когда есть много файлов для печати одновременно ?

Sergey Alexandrovich Kryukov

Что заставляет вас думать, что вам это действительно нужно?
--СА

GLolita

поскольку мое приложение будет извлекать документы с сервера и отправлять эти файлы на клиентскую сторону, где будет происходить операция печати, я подумал, что, поскольку я нахожусь на стороне сервера и понятия не имею о принтере, я должен использовать низкоуровневые услуги печати. gdi32.dll и winspool.drv

Sergey Alexandrovich Kryukov

Просто неправильная мотивация. Это не может действительно помочь вам, но .Чистая печать будет работать.
--СА

Richard MacCutchan

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

Sergey Alexandrovich Kryukov

Это хорошая мысль.
--СА

GLolita

ну эта статья подала мне идею http://www.c-sharpcorner.com/UploadFile/johnodonell/PrintingDirectlytothePrinter11222005001207AM/PrintingDirectlytothePrinter.aspx

Sergey Alexandrovich Kryukov

Ну, некоторые статьи дают идею совершить самоубийство, но будете ли вы следовать указаниям?
Я говорю вам: используйте чистую печать .NET и перестаньте думать о чем-то еще, что не поможет вам по причинам, которые я пытался перечислить. Если вам нужна помощь, задайте несколько дополнительных вопросов. Если вы согласны, примите мое решение формально (зеленая кнопка).
--СА

GLolita

спасибо за решение , но вот моя проблема теперь может ли .NET process выполнять печать в автоматическом режиме? смысл : да , я хочу распечатать свои файлы, но я хочу сделать это дискретно, не открывая их сначала, даже не скрытый дисплей windows! так есть какие-нибудь идеи на этот счет ?

3 Ответов

Рейтинг:
2

Koen De Backer

Это то, что вы ищете:

var processStartInfo = new ProcessStartInfo(filename)
{
    Verb = "Print",
    CreateNoWindow = true,
    WindowStyle = ProcessWindowStyle.Hidden
};
Process.Start(processStartInfo);


Kornfeld Eliyahu Peter

Спустя почти 6 лет?! - Вы уверены?

Рейтинг:
13

Maxim Kartavenkov

Привет,

Вы можете использовать spooler API. В данной статье поможет вам:

http://support.microsoft.com/kb/322091/en-us[^]
http://support.microsoft.com/kb/138594/en-us[^]

С уважением,
Изречение.


Рейтинг:
0

Sergey Alexandrovich Kryukov

Если вы используете C#, печать непосредственно с Win32 API будет 1) неудобной, трудной для реализации, 2) не переносимой на платформу (в отличие от использования CLI и .NET ГКЛ — вы сможете запускать свой код на ряде платформ, отличных от Microsoft). Я не вижу ситуаций, в которых вы могли бы извлечь из этого какую-либо пользу. Поскольку большинство участников также не любят тратить свое время на то, что не имеет смысла или не очень полезно, вам нужно будет предоставить убедительная мотивация о том, чего ты хочешь, но я не думаю, что ты сможешь добиться успеха.

—СА