![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Гость_Aaz |
|
|||
Unregistered |
Мне нужно эмуляция нажатия кнопки мышы в определенном окне.
Мой код: HWND wnd1 = FindWindow(NULL,"XXX"); //PostMessage(wnd1, WM_KEYDOWN, VK_F1, 0); //Проверял правильно ли найдено окно. Все ок Кнопка Ф1 срабатывала // Пробовал так ничего возвращает true- в очередь ставит // PostMessage(wnd1, WM_LBUTTONDOWN, 0, MAKELPARAM(300,300)); // PostMessage(wnd1, WM_LBUTTONUP, 0, MAKELPARAM(300,300)); // Так Ничего тоже самое // PostMessage(wnd1, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(300,300)); // PostMessage(wnd1, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(300,300)); //Попробовал напрямую без очереди Выдает false bool y = SendMessage(wnd1, WM_LBUTTONDOWN, 0, 300*65536+300); bool yy = SendMessage(wnd1, WM_LBUTTONUP, 0, MAKELPARAM(300,300)); Помогите плиззз..я уже незнаю что придумать или что я упустил. Может кто подскажет др реализацию эмуляции мыши не через PostMessage заранее спасибо |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
а ты уверен что мышой нажать нужно в окне а не на какой-нить кнопке?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Гость_Aaz |
|
|||
Unregistered |
В часности мне надо нажимать кнопки в флешь обекте, на веб странице.
Вполне возможно что придеться не только кнопки но и просто нажатие в отдельную точку. Поэтому и пытаюсь сразу с мышкой разобраться...А не конкретизироваться на отдельных кнопках. Но если нечего не получиться то придеться и кнопкоми заняться...Тока как определить индификатор Флешь кнопки в Флешь обекте??? |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Мож не попадаешь по кнопке??? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Гость_Aaz |
|
|||
Unregistered |
Вставлял строчку
SetCursorPos(300,300); И разворачивал окно на весь экран что бы небыло делем с относительными координатами экрана и окна. Так же на простом приложении AkelPad пробовал эмуляции нажатия правой кнопки. Должно было вылезни меню, по всей поверхности приложения. Ничего те же результаты. при SendMessage выдает false |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
нарисуй тестовое приложение ( с одной кнопкой и попробуй ему таким образом послать сообщения )
+ координаты тым не абсолютные а оконные -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
_hunter |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
тут дело, скорее всего, в адресате
потому как в тестовом приложении такой:
код работает, а такой
уже нет... Добавлено @ 14:08 + вот что spy++ показывает:
последние два -- уже реакция кнопки. попробуй такой же набор послать -------------------- Tempora mutantur, et nos mutamur in illis... |
||||||
|
|||||||
Гость_Aaz |
|
|||
Unregistered |
Создал форму. С одной большой кнопкой и текст полем для отоброжения результата.
Координаты относительно окна. Навсякий случай подвинул форму в левый верзний угол. код
непомогает...ничего.... Уже Пробовал перестовлять PostMessage(wnd1, WM_LBUTTONDOWN, MAKELPARAM(100,100),0); параметры....Уже крыша едет ![]() Может ещо у кого есть соображения. |
|||
|
||||
Aleksandor |
|
|||
![]() Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
А пробовал SetFocus(wnd1) перед тем как слать ему сообщения? Попробуй вставить Beep(3000,200); чтобы узнать получает ли окно твои сообщения.
-------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
я ж говорю. сообщения идут адресату, а он ( адресат ) не пытается определить есть ли у него дети по заданным координатам.
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Гость_Aaz |
|
|||
Unregistered |
to hunter :
Я ещо только учусь поправь где я непонял пожалуйста. --Spy++ Перехватывает сообщения окну. R ответ окна S SendMessage P PostMessage И поручаеться нужно послать окну (по твоему коду):
Или я тебя неправильно понял???? Потому что при этом коде тоже ничего непроисходит. |
|||
|
||||
Aleksandor |
|
|||
![]() Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
А если так
-------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
Гость_Aaz, по-идее -- так. ( хотя с флешем может и не сработать -- лучше spy' ем посмотри такие же ему сообщения идут или нет )
Aleksandor, посылать нужно не нормальному окну, а во флеш -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Гость_Aaz |
|
|||
Unregistered |
to Alexsandor:
О гуру ![]() РАБОТАЕТ ![]() Оканчательный вариант
Мдя......Я бы долго соображал.... |
|||
|
||||
Гость_Aaz |
|
|||
Unregistered |
огромное спасибо всем кто неполенился подумать над моей проблемой.
|
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Для эмуляции мыши лучше использовать функции mouse_event или SendInput.
Преимущества: нет привязки к окну. Событие обрабатывается системой абсолютно так же, как если бы пользователь действительно ткнул мышем. И попадает в очередь ввода правильного окна автоматически. -------------------- ... |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Почти не читал комментарии, но сразу вижу правильное решение Earnest
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
KQT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 17.10.2007 Репутация: нет Всего: нет |
Earnest, благодярю за наводку: mouse_event и SendInput, но всё же...
Гость_Aaz, действительно ли окончательный вариант "такой"? SendMessage отправляет сообщение обработчику окна и ждёт(!) обработки. Тот видимо не завершает работы пока клавиша мыши не будет отжата, то есть второй Send уже не играет ни какой роли: программа повисает на первом в ожидании WM_LBUTTUNUP. Все получается если например использовать SendMessageCallback... |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Не поняла твое замечание, да и тема древняя...
SendMessage не помещает событие в очередь, а напрямую (синхронно) вызывает оконную функцию, отсюда и блокировка. -------------------- ... |
|||
|
||||
KQT |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 17.10.2007 Репутация: нет Всего: нет |
... Не помещает - хотим напрямую обратиться к обработчику окна. Но
В переписав код приведенный выше моя программа стоорилась на первом sendmessage в ожидании отжатия клавиши мыши, иначе говоря управление было передано процедуре окна первым sendmessage, а она по какой то причине не желает завершатсья пока кнопка не будет отжата... В итоге второй sendmessage выполняется "впустую", когда в этом необходимости уже нет. Решается это PostMessage или SendMessageCallback . Тема то старая, но мне нынче актуальна) и оказалась чем-то полезна. |
|||
|
||||
walkmn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.10.2010 Репутация: нет Всего: нет |
У меня работает только если в данных координатах кнопка, а мне нужно чтобы нажималась в определенных координатах компонента СppWebBrowser. Ну например есть форма с компонентов СppWebBrowser в котором загружен гугл, и мне нужно клацнуть по определенной ссылке, но сетмоусепоз не предлагать, кликать по ссылке программа должна в свернутом режиме!!! |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
это не проканает ... имхо нужно парсить страницу на наличие ссылок и переходить на урл.... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
walkmn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.10.2010 Репутация: нет Всего: нет |
Romikgy, да нет, просто я это как в пример привел, на самом деле нужно нажать на кнопку, которая написана на Flash.
Тоесть это флеш игрушка, нужно написать для нее чтото типа автобота. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
walkmn, тогда попутно разобратся с флешем ... видать там есть типа мессаг при нажатии на кнопки ... вот их можно слать (я так думаю) иначе только активировать окно и по координатам кнопать ...
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |