Как извлечь данные растрового изображения при печати изображения из редактора изображений, такого как MSPaint? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как извлечь данные растрового изображения при печати изображения из редактора изображений, такого как MSPaint? [закрыто]

Сообщение Anonymous »

Для моего проекта (приложение C++ для Windows) у меня есть вариант использования:
  • Когда пользователь выполняет операцию печати (либо с помощью Ctrl+P или какой-либо опции графического интерфейса, например нажатия кнопки печати), прежде чем запрос будет отправлен в спулер Windows, мне нужно отсканировать изображение, чтобы проверить, содержит ли оно какие-либо текстовые данные.
  • У меня есть надстройка, внедренная в редакторы изображений, которая отслеживает операции печати.
  • Моя задача — сделайте эту надстройку перехватчиком API, который получает растровые/растровые данные из входного файла (файла изображения), затем я могу сбросить их в какой-нибудь временный файл, чтобы мое приложение могло сканировать этот временный файл на наличие текстовых данных.
Я сделал несколько первоначальное исследование того, как операции печати работают в Windows:
Введение в печать
На основе этого приложения (редакторы изображений), которые запускают операции печати, преобразуют вводимые данные. данные в формат EMF или XPS, который представляет собой векторный тип файла. Затем спулер Windows выполняет следующий набор операций.
Если я правильно понимаю, то приложения (MSPaint или любые редакторы изображений) отвечают за преобразование растровых данных/данных изображения в EMF или XPS. файлы.
Итак, мой план состоит в том, чтобы перехватить API, который имеет данные растрового изображения в качестве входных данных, и сбросить их в какой-то временный файл для достижения моей цели.
Я попробовал подключиться к BitBlt() API gdi32.dll, но я обнаружил, что этот API слишком общий, он запускается слишком много раз. (Например, если пользователь нажимает на экран ввода, сворачивает экран ввода и т. д.).
Вторая проблема с BitBlt() заключается в том, что API на основе GDI используется только в устаревших приложениях. Когда я зарегистрировался в приложении UWP, таком как Microsoft Photos, они вообще не используют API на основе GDI.
Итак, есть ли способ выполнить это требование? Правильно ли я понимаю архитектуру печати Windows? Какие API я могу использовать для достижения своей цели? Существуют ли какие-либо инструменты, которые могут дать четкое представление об API? До сих пор я пробовал использовать procmon и btrace.

Подробнее здесь: https://stackoverflow.com/questions/793 ... r-like-msp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»