Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 19:20   #1
Mufer
 
Регистрация: 08.01.2010
Сообщений: 6
Вопрос Сообщения чужому окну - SendMessage

Пишу программку которая отправляет нажатие мыши по координатам в чужое окно. Столкнулся с проблемой, приложение ни как не реагирует на SendMessage, разглядывал в Spy++ и вот скрины:
Когда я сам нажимаю на форме
11.JPG
и результат кода
12.JPG

я думаю найдутся знающие люди и объяснят, что за буквы, которые в кружках и как избавиться от строк что указаны стрелками.
Вот функция для отправки сообщений

Код:
procedure TKontur.ClickByWindow(aHWindow : HWND; aX : Word; aY : Word);
var
  Crd,Msg, Msg1: Longword;
begin
  Crd := (aX-4) or ((aY-30) shl 16);
  Msg:= HTCLIENT or (WM_LBUTTONDOWN shl 16);
  Msg1:= HTCLIENT or (WM_LBUTTONUP shl 16);

  SendMessage(aHWindow,WM_NCHITTEST,0,Crd);  //Эти сообщения я просто подогнал
  SendMessage(aHWindow,WM_SETCURSOR ,aHWindow,msg);//сравнивая с истинным нажатием
  //Эмуляция нажатия левой кнопки мыши.
  SendMessage(aHWindow,WM_LBUTTONDOWN, MK_LBUTTON, Crd);

  SendMessage(aHWindow,WM_NCHITTEST,0,Crd); //Эти сообщения я просто подогнал 
  SendMessage(aHWindow,WM_SETCURSOR ,aHWindow,msg1);//сравнивая с истинным нажатием
  //Эмуляция отжатия левой кнопки мыши.
  SendMessage(aHWindow, WM_LBUTTONUP, MK_LBUTTON, Crd);

end;
Наверное я переформулирую вопрос, перед мной стояла задача:
сделать снимок части чужого окна, скопировать на свою форму и при надобности кликать в свою форму передавая клики чужому окну. Со снимком разобрался, координаты в порядке. вот только сообщения не долетают.
Если бы в окне определялись контролы, было бы легче, но окно как бы пустое (хотя там много чего есть).

Последний раз редактировалось Mufer; 10.01.2010 в 20:03.
Mufer вне форума Ответить с цитированием
Старый 10.01.2010, 19:35   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Пробуйте WM_LBUTTONDOWN + WM_LBUTTONUP без "просто подогнал" сообщений. Думаю все должно быть нормально.
BOBAH13 вне форума Ответить с цитированием
Старый 10.01.2010, 19:44   #3
Mufer
 
Регистрация: 08.01.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Пробуйте WM_LBUTTONDOWN + WM_LBUTTONUP без "просто подогнал" сообщений. Думаю все должно быть нормально.
Без этих строк
Код:
  SendMessage(aHWindow,WM_NCHITTEST,0,Crd); //Эти сообщения я просто подогнал  
  SendMessage(aHWindow,WM_SETCURSOR ,aHWindow,msg1);//сравнивая с истинным нажати
Сообщение в четыре строки выходит и сроки, что стрелками указаны остаются.
Откуда они то берутся и что обозначают выделенные буквы?
Mufer вне форума Ответить с цитированием
Старый 10.01.2010, 20:44   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы не заметили что в оригинале сообщения Post'ятся(буква P)
а у вас Send'ятся(S + результат R)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.01.2010, 20:51   #5
Mufer
 
Регистрация: 08.01.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вы не заметили что в оригинале сообщения Post'ятся(буква P)
а у вас Send'ятся(S + результат R)
Ну дык я и спрашивал, что за буквенное обозначение, (мелко плаваю пока ), и каким макаром это поправить, в Html я могу различить пост запрос и гет, а как здесь не знаю. Подскажите.
Mufer вне форума Ответить с цитированием
Старый 10.01.2010, 20:52   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
PostMessage и SendMessage
Разница в том, что Send пошлет немедленно и заставит выполнить "стоя над душой", а Post оставит записку с надписью "выполнить" и уйдет, т.е. поместит в очередь.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 10.01.2010, 21:10   #7
Mufer
 
Регистрация: 08.01.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Код:
PostMessage и SendMessage
Разница в том, что Send пошлет немедленно и заставит выполнить "стоя над душой", а Post оставит записку с надписью "выполнить" и уйдет, т.е. поместит в очередь.
Спс, ломаем голову дальше, отвечать не хочет
Mufer вне форума Ответить с цитированием
Старый 10.01.2010, 21:29   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

помоему я сказал все.
PostMessage, а не SendMessage у которого есть Result;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.01.2010, 21:36   #9
Mufer
 
Регистрация: 08.01.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
помоему я сказал все.
PostMessage, а не SendMessage у которого есть Result;
да сейчас проблема уже в другом, сама форма не отвечает на запросы, или там защита какая - это игрушка. Но такие программы я видел, у людей как то работает, значит выход есть!

Может нужно окно активировать как то, запросы идут нормально вот только реакции никакой

Последний раз редактировалось Mufer; 10.01.2010 в 21:38.
Mufer вне форума Ответить с цитированием
Старый 10.01.2010, 22:17   #10
Mufer
 
Регистрация: 08.01.2010
Сообщений: 6
Вопрос

А как прячут все контролы. Spy++ показывает голое окно. но ведь я не могу играть на пустой форме, где-то они зарыты.
И ещё, может попробовать копировать все действия на моей форме и с поправкой координат посылать чужой, или это будет ошибкой. я так понимаю двух активных окон быть не может или можно обмануть другое приложение и сказать ей "ты активна, вперёд"
Mufer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли добавить чужому приложению кнопку? TwiX Общие вопросы Delphi 21 12.11.2009 17:54
Клик по чужому LISTVIEW Neoteric Общие вопросы Delphi 6 14.04.2009 12:16
Вопрос по активному окну san72 Общие вопросы Delphi 11 07.03.2009 12:05
от консоли к окну ёжик Общие вопросы C/C++ 3 06.04.2008 17:51
Сообщение другому окну Бонарт Win Api 13 15.08.2007 20:23