Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Послать приложению "F5" (http://forum.oszone.net/showthread.php?t=116976)

capaton 12-09-2008 05:06 896943

Послать приложению "F5"
 
Возможно ли програмно послать активному приложению задачу обновить страницу - как будто на на клаве нажали кнопку "F5" или Refresh?
Нужно для обновления интернет страниц в автоматическом режиме. Страница заведомо активна но обновлять нужно каждые 30 мин.

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

Admiral 13-09-2008 02:02 897759

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
а если не найдет то запустит))) »

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

capaton 13-09-2008 11:07 897881

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

Admiral 13-09-2008 15:59 898118

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 898175

Благодаря Admiral-у и моим скромным усилиям появился готовый результат:

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

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


Время: 22:37.

Время: 22:37.
© OSzone.net 2001-