Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Виртуальный экран для окна приложения


Автор: marcusmae 18.12.2007, 00:00
Здравствуйте, друзья,

Дано некое выдающееся приложение, которое умеет строить визуализации. Со своей работой оно справляется без нареканий. Но просто строить картинки недостаточно, нужно построить их весьма значительное количество, чтобы потом смонтировать в фильм. Проблема в том, что это не может быть быстро выполнено вручную : для построения каждой визуализации необходимо выполнять определённую последовательность клавиатурно-мышиных действий. Жаль, услуги девочек-машинисток недоступны, так что задача в том, чтобы автоматизировать этот процесс, причем желательно, чтобы самого приложения при этом на экране не было. Приложение не экспортирует никаких функций и не поддерживает COM/ActiveX и всякие там скрипты.

Можно ли вывести окно другой программы за пределы отображаемой области экрана, чтобы затем программно клацать по нему мышью? Или, напишите, пожалуйста, если есть какие-нить идеи по-лучше на этот счёт.

Автор: chozen 18.12.2007, 00:28
Смотри.

А ты не думал, что, имея на диске кучу огроменную изображений, ты закрутишься их в фильм вставлять, или же Адоб Премьер умеет делать видео из папки изображений? )) Но не суть.

Что тебе мешает создать безоконное WinAPI приложение, в нем запустить хуки на мышь и клаву, может быть еще парочку таймеров, и эмулировать клики/нажатия там, где это надо. (Я думаю, на чужом окне ты сможешь найти поле ввода или, скажем, просто знаешь область, в которой нужно проэмулировать щелчок).

Автор: marcusmae 18.12.2007, 00:38
chozen, спасибо за ответ,

Цитата(chozen @  18.12.2007,  00:28 Найти цитируемый пост)
А ты не думал, что, имея на диске кучу огроменную изображений ты закрутишься их в фильм вставлять, или же Адоб Премьер умеет делать видео из папки изображений? )) Но не суть.


Да, не суть. Стандартный Windows Movie Maker и то это делает  smile

Цитата(chozen @  18.12.2007,  00:28 Найти цитируемый пост)
Что тебе мешает создать безоконное WinAPI приложение, в нем запустить хуки на мышь и клаву, может быть еще парочку таймеров, и эмулировать клики/нажатия там, где это надо. (Я думаю, на чужом окне ты сможешь найти поле ввода или, скажем, просто знаешь область, в которой нужно проэмулировать щелчок)


Как создать безоконное WINAPI приложение? Если можно, пример...

Автор: dumb 18.12.2007, 06:20
Цитата(marcusmae @  18.12.2007,  00:00 Найти цитируемый пост)
причем желательно, чтобы самого приложения при этом на экране не было
так не получится.

а что касается непосредственно автоматизации: нет смысла изобретать велосипед - есть множество готовых продуктов для записи-воспроизведения макросов. из тех, что сразу вспомнились: nnCron(он вроде не умеет записывать, но можно описать скриптом требуемую последовательность), Automate(пользовал лет 5-8 назад, не знаю в каком он сейчас состоянии). http://soft.softodrom.ru/scr/rasdel.php?ras=1&subras=7

Цитата(chozen @  18.12.2007,  00:28 Найти цитируемый пост)
Что тебе мешает создать безоконное WinAPI приложение, в нем запустить хуки на мышь и клаву, может быть еще парочку таймеров, и эмулировать клики/нажатия там, где это надо. (Я думаю, на чужом окне ты сможешь найти поле ввода или, скажем, просто знаешь область, в которой нужно проэмулировать щелчок).
совет не в тему. "безоконность" приложения, эмулирующего нажатия, не имеет отношения к "видимости" окон целевой программы. хуки могут понадобиться только при записи действий пользователя, тут же они к эмуляции приплетены...

Автор: zkv 18.12.2007, 10:46
Цитата(marcusmae @  18.12.2007,  00:00 Найти цитируемый пост)
Можно ли вывести окно другой программы за пределы отображаемой области экрана

может http://www.codeproject.com/KB/cpp/Multi_Desktop.aspx поможет?
честно говоря сам с ним не работал, просто на вооружении держал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)