Подключение API Windows: spoolss.dll

ActiveX, .NET, DLL
Ответить
Аватара пользователя
Cobb

Автор
beginner
beginner
Сообщения: 15
Зарегистрирован: 29 ноя 2013, 03:33
Награды: 2
Версия LabVIEW: 2012
Контактная информация:

Подключение API Windows: spoolss.dll

Сообщение Cobb »

Приветствую Вас, люди добрые!

Помогите пожалуйста в такой ситуации:
Необходимо с помощью LabView перехватить файл, отправленный на принтер, с целью считать из него определенные данные, занести их в BAR-код, затем добавить этот код (как изображение) к первоначальному файлу-и уже распечатать в таком виде.

Можно ли такое реализовать?

1. Для работы с печатью в ОС Windows использую Print Spooler API-spoolss.dll, подключаю ее к VI с помощью узла Call Library Node, а вот как дальше считать и обработать данные согласно ТЗ - пока не соображу. Большинство принтеров держат данные в формате RAW. Как можно такие данные извлечь и обработать?
2. При печати служба spoolsv.exe сохраняет отправленный на принтер файл с расширением *.spl. Содержимое его можно как-нибудь прочитать внутри VI? Тут возникли затруднения, а посему п.1 кажется более предпочтительным.

Основное затруднение именно с получением и обработкой входных данных. Ибо последующие этапы можно реализовать с помощью IMAQ и Vision Development.

Если есть идеи и/или советы-очень прошу помочь! :think:

Заранее спасибо!
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Подключение API Windows: spoolss.dll

Сообщение IvanLis »

Конкретно ничего посоветовать не могу.
Но мне кажется, что нужно делать что-то типа виртуального принтера. Пользователь должен отправлять задание на печать именно в него.
А уже там (в вирт. принтере) делать обработку и после этого отправлять уже на реальный принтер.

p.s. Это не руководство к действию, просто мысли вслух. Но может окажутся полезны.
Аватара пользователя
Cobb

Автор
beginner
beginner
Сообщения: 15
Зарегистрирован: 29 ноя 2013, 03:33
Награды: 2
Версия LabVIEW: 2012
Контактная информация:

Re: Подключение API Windows: spoolss.dll

Сообщение Cobb »

Да, была подобная идея.

Если виртуальный принтер еще можно сделать в ОС Windows, то как прикрутить к нему исполняемый модуль на LabView? Так же через API?

Если кто сталкивался с подобными вещами-посодействуйте пож-та
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Подключение API Windows: spoolss.dll

Сообщение dadreamer »

Cobb писал(а):2. При печати служба spoolsv.exe сохраняет отправленный на принтер файл с расширением *.spl. Содержимое его можно как-нибудь прочитать внутри VI? Тут возникли затруднения, а посему п.1 кажется более предпочтительным.
В принципе, это реализуемо, есть даже софт, перегоняющий SPL в PDF, TXT, JPG и т.д., например, такой. Однако, мне кажется, этот вариант себя не оправдывает, так как структура принтерных файлов (SPL, EMF, SHD, TMP) зависит от драйвера принтера, версии Windows и вообще мало документирована, плюс может измениться по любому желанию Microsoft. Про эти файлы можно почитать здесь и здесь (в конце страницы есть полезный софт). Думаю, даже реально найти SDK для конвертации файлов принтерного типа в общепринятый формат на лету.

А нельзя ли использовать не перехватчик данных, уже отправленных на принтер, а сперва записать/обработать данные в :labview: как вам требуется, а потом уже их посылать на печать?
Аватара пользователя
Cobb

Автор
beginner
beginner
Сообщения: 15
Зарегистрирован: 29 ноя 2013, 03:33
Награды: 2
Версия LabVIEW: 2012
Контактная информация:

Re: Подключение API Windows: spoolss.dll

Сообщение Cobb »

Добрый вечер!

Спасибо за ценную информации и ссылки-уже начал изучать.
А нельзя ли использовать не перехватчик данных, уже отправленных на принтер, а сперва записать/обработать данные в :labview: как вам требуется, а потом уже их посылать на печать?
Соль в том, что на принтер отправляются данные из совершенно разного ПО. Не ко всякому софту можно подключиться. Да и номенклатура форматов-тоже широка.

А вот идея со SPL to TXT например-очень даже практична. Ибо можно использовать виртуальный принтер, а настраивать его уже под свои нужды. Попробую такой вариант
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Подключение API Windows: spoolss.dll

Сообщение dadreamer »

Странно то, что для перехвата вы выбрали :labview: - среду разработки ПО преимущественно для инженеров. Работать с WinAPI, хуками, сообщениями проще в C/C++. Да и виртуальный принтер в :labview: просто так не создать, придется как минимум использовать последовательность CLFN или писать свою библиотеку.
Аватара пользователя
Cobb

Автор
beginner
beginner
Сообщения: 15
Зарегистрирован: 29 ноя 2013, 03:33
Награды: 2
Версия LabVIEW: 2012
Контактная информация:

Re: Подключение API Windows: spoolss.dll

Сообщение Cobb »

1. C/C++-я основательно подзабыл:(
2. :labview: очень удачно интегрируется с последующим ПО в этой технологической цепочке. И не только с ПО, но и с различным оборудованием
3. И с помощью FBD гораздо проще объяснить функционирование системы, чем с помощью простыни текстового кода
Аватара пользователя
Cobb

Автор
beginner
beginner
Сообщения: 15
Зарегистрирован: 29 ноя 2013, 03:33
Награды: 2
Версия LabVIEW: 2012
Контактная информация:

Re: Подключение API Windows: spoolss.dll

Сообщение Cobb »

Привет Всем! :bye:

Указанную проблему в принципе решил.

Сейчас тестирую

Если все будет успешно-поделюсь наработками...
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приложениями»