Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 378

/ вопрос открыт /

Приветствую, уважаемые эксперты!

Большое спасибо этому чудесному сайту, большое спасибо программистам, которые отвечают на вопросы.
По сути: мне необходимо создать программу, только не знаю с какого места зайти в Делфи. Основная функция программы заключается в том, что при нажатии на любую кнопку в Windows-ce, Internet Explorer, флешь анимации (это самое главное), эта кнопка распознавалась, и в программе происходили какие нибудь действия, например записывалось что Пользователь в такое то в время нажал кнопку «добавить» во флешь анимации, или закрыть.
Распознавание кнопки хотелось бы, что происходило при помощи сравнения с таким же рисунком, например, Пользователь нажал кнопку «закрыть» далее сработала моя программа, она сравнила со своей базой кнопок «закрыть» с кнопкой которую, нажал пользователь…
Так же программа должна, сама понимать на какую кнопку нажал пользователь, просто есть кнопки, которые нельзя распознать как текст, например «>>>» что обозначает далее.
Прошу заметить, что я работаю не над шпионской программой, просто мне необходимо сделать статистику для одной программы!…

Cool Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Cool (статус: Посетитель)
Вопрос отправлен: 26 февраля 2008, 13:45
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Cool!
Не обойтись вам без хуков. Сложного ничего нет, читаем здесь http://www.delphikingdom.com/asp/viewitem.asp?catalogid=548 статью, примеры там есть.
В вашем случае нужен хук типа WH_CALLWNDPROC или WH_GETMESSAGE. Он будет вызываться всегда, когда обрабатываются сообщения. Нажали кнопку - вам пришло сообщения вида WM_LBUTTONCLICK и хендл кнопки. Зная хендл, можно узнать текст на объекте (например кнопке) или его размеры. Вот здесь http://www.delphimaster.ru/articles/winapi/index.html есть пример.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 26 февраля 2008, 23:43
Оценка за ответ: 4


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 1 марта 2008, 00:28; участников в обсуждении: 2.
Cool

Cool (статус: Посетитель), 27 февраля 2008, 12:24 [#1]:

Большое спасибо за ответ. У ставновил глобальный хук, обработал сообщения, а вот хенд нажатой кнопке, немогу...?
Вадим К

Вадим К (статус: Академик), 28 февраля 2008, 00:20 [#2]:

Я предполагал этот вопрос. смотрите вторую ссылку. Там есть. А так, можно с помощью FindWindow найти окно, в котором находиться кнопка, а потом findwindowex поможет найти кнопку по имени.
В примерах к первой статье есть всё необходимое. просто внимательно читаем.
Галочка "подтверждения прочтения" - вселенское зло.
Cool

Cool (статус: Посетитель), 29 февраля 2008, 07:57 [#3]:

ну что то получается, но несовссем как я хотел!

WM_LBUTTONDOWN:
begin
h := WindowFromPoint(Mouse.CursorPos);
GetWindowRect(H,Rect);
DC := GetWindowDC(H);

Buffer := TBitmap.Create;
Buffer.Height := Rect.Bottom-Rect.Top;
Buffer.Width := Rect.Right-Rect.Left;
BitBlt(Buffer.Canvas.Handle,0,0,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top,
DC,0,0,SRCCOPY);

Как быть с флеш анимациями, и кнопками из html, они определяются как всё окно, а не как кнопка? А хотелось выдёргивать только кнопки?
Вадим К

Вадим К (статус: Академик), 1 марта 2008, 00:28 [#4]:

С броузерными кнопка сравнительно несложно, хотя проще взять снифер и посмотреть, что там пересылается.
Как нажать на какую то кнопку в броузере - я знаю, координаты теоретически получить могу, но всё это справедливо для IE.

А вот с флешем будет посложнее. Дело в том, что там всё рисуется и такого понятия как "хендл кнопки" нет. Если это обычное флеш приложение, то можно просто составить "карту" координат и по ним определять куда попали.

Может просто задачку сформулируем поточнее? а то рассуждать о сферическом коне в вакууме сложновато. Что за флеш, что именно хотим сделать?
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.05 сек.