Войти

Показать полную графическую версию : [решено] Послать приложению "F5"


capaton
12-09-2008, 05:06
Возможно ли програмно послать активному приложению задачу обновить страницу - как будто на на клаве нажали кнопку "F5" или Refresh?
Нужно для обновления интернет страниц в автоматическом режиме. Страница заведомо активна но обновлять нужно каждые 30 мин.

Усложненный вариант (для гуру Delphi) если приложение не активно то посылать "Alt+Tab" пока не найдет, а если не найдет то запустит)))

Admiral
13-09-2008, 02:02
capaton, для поставленных задач есть уже готовый инструмент. Например AC Tool http://www.actool.net/ исходники которого кстати на Delphi так что если что можно подсмотреть. Для реализации в этой программе нужен скрипт примерного содержания

While 1=1
SetActiveWindow Delphi - Послать приложению "F5" - Программирование - Opera
Keys {F5}
Delay 1800000
End While

После SetActiveWindow нужно указать имя интересующего окна, включая и название браузера.
1800000 - это 30 минут в миллисекундах.
а если не найдет то запустит))) »
Такое тоже возможно в этой утилите, в хелпе (на английском правда) достаточно подробно расписаны команды. Осталось ответить катит ли такой вариант. Если нет то исходный код утилиты доступен и можно писать свою аналогию.

capaton
13-09-2008, 11:07
СКачал я AC Tool 5.4.0 - програмка хорошая и работает.
но как всегда есть одно но))
Функция SetActiveWindow вызываеться с переметром названия активного окна, а в моем случае оно (название) возможно измениться по этому нужно использовать именно дескриптор.
Продолжаю тему лишь потому что не нашел исходных кодов жтой самой проги - возможно плохо искал.
Уважаемый Admiral если не сложно помочь мне еще раз - сказать где именно раздобыть исходники.

Admiral
13-09-2008, 15:59
capaton, как вариант пускай скрипт сам запускает окно, оно будет активным и пускай в него пуляет F5.

По приведённой выше ссылки на той же самой странице приводится ссылка на архив с исходником, на всякий случай даю прямую ссылку и здесь
AC Tool Source 5.4.0 -> http://www.actool.net/files/actoolsource_540.zip 1.97 Mb
Желаю успехов.

capaton
13-09-2008, 17:51
Благодаря Admiral-у и моим скромным усилиям появился готовый результат:

if H<>0 then // H - дескриптор приложения
begin
SetForegroundWindow(H);
keybd_event(VK_F5, MapVirtualKey(VK_F5, 0), KEYEVENTF_EXTENDEDKEY, 0);
Sleep(iKeyDelay); // iKeyDelay задержка нажатой клавиши в мс
end;

Основная задача решена, осталось навести марафет))




© OSzone.net 2001-2012