Как отправить нажатия клавиш в приложении на C ++ - PullRequest
2 голосов
/ 10 октября 2010

Я пытаюсь создать программу для открытия файлов Acrobat с помощью Adobe Acrobat Reader и автоматического сохранения их в текстовом файле. Я хочу, чтобы моя программа работала:

  • открыть PDF
  • отправить Alt + Tab // для перехода на вкладку акробата
  • отправить Alt + F //, чтобы открыть файл
  • отправить Вниз Вниз Вниз Вниз (4 раза) // для выбора опции «сохранить как текст»
  • отправить Введите // для сохранения

Я использую ОС Windows. Может кто-нибудь, пожалуйста, помогите мне, как это сделать?

Что ж, моя прекрасная цель - автоматически сохранить название и автора около 2500 pdf-файлов в базе данных, что вы можете предложить лучше? это было то, что я придумал.

Ответы [ 4 ]

0 голосов
/ 10 октября 2010

Вы можете использовать API SendMessage для отправки сообщений мыши и клавиатуры в окно, или вы можете использовать sendinput, который имитирует реальные аппаратные события.Я согласен с другим человеком, используйте AutoIT

0 голосов
/ 10 октября 2010

Пара вещей,

1) Имитация нажатия клавиш для взаимодействия с другим приложением - это очень и очень плохо идея .Вам лучше найти API, которые будут делать то же самое.

Если вы все еще не передумали, читайте дальше ...

2) Для сохранения, почему бы не использоватьCtrl+S чтобы сохранить, Ctrl+O чтобы открыть.Я уверен, что вы найдете прямые ярлыки и для других.

Вот Проект , который может помочь.

0 голосов
/ 10 октября 2010

Попробуйте AutoIt .С веб-сайта:

"AutoIt - это бесплатный язык автоматизации Windows. Его можно использовать для написания сценариев большинства простых задач на базе Windows."

0 голосов
/ 10 октября 2010

Вы захотите использовать Spy ++ и наблюдать за сообщениями, передаваемыми в окно при выполнении этих действий (обратите внимание, что открытие PDF-файла с помощью Acrobat и захват дескриптора Window - это разные операции).Оттуда посмотрите на:

http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

Обмен сообщениями Win32 затруднен, если вы не привыкли к нему и хрупок, как упомянуто @Alf.Я бы посоветовал вам попробовать другой подход, но если вы используете Google "win32 sendmessage" или "win32 sendkeys", это должно помочь вам начать.

...