Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как послать WM_LBUTTONDOWN неактивному окну?


Chorniy ©   (2008-02-25 20:51:00) 

Имеем:

1. Окно моей программы (fsStayOnTop), на котором расположена кнопка. Эта кнопка посылает сообщение WM_LBUTTONDOWN окну другой программы (другая программа - игра, развернутая на весь экран)

2. Когда я кликаю по кнопке, то мое окно становится активным
и сообщение то ли не доходит, то ли некорректно обрабатывается другим окном. В общем на другом окне ничего не происходит.

3. При посылке WM_KEYDOWN все рабоет отлично.

как сделать чтобы сообщения обрабатывались, и возможно ли вообще послать сообщения о клике мыши на неактивное окно?


Alexander_Warlock   (2008-03-16 03:32:00) [1]

Если удалось решить этот вопрос - хотелось бы пообщаться (icq: 121138909). Игра случаем не Lineage II ?


Chorniy   (2008-02-26 06:35:00) [2]


> Естественно возможно.

тогда возникает естественный интерес, а в какую сторону копать, чтобы все-таки послать ей события с мышки? Драйвер она все равно должна использовать... или DirectInput  какой-нибудь?

вопрос:
какие есть способы принять от мышки события, минуя messages, пусть даже самые извращенные ;) и где почитать про них?


Германн   (2008-02-26 01:37:00) [3]


> 1. игра обрабатывает события мыши не через виндовские сообщение
> (такое вообще возможно???)

Естественно возможно.
Подумай сам как в ДОСе работали с мышью? Ведь там не было никаких "виндовских сообщений".


Chorniy   (2008-02-26 00:51:00) [4]

Даже если окно тестовой проги свернуто, то все равно цвет меняется (значит мессадж доходит и обрабатывается)

;))))


Chorniy   (2008-02-26 00:48:00) [5]

сделал тестовую прогу, на событие OnMouseDown поставил смену цвета формы
посылаю форме сообщение WM_LBUTTONDOWN, фокус ввода ей не принадлежит, однако цвет сменяется.


Chorniy   (2008-02-26 00:41:00) [6]

может я неправильно понимаю что такое "неактивное окно"? по моему мнению - это то окно которому не принадлежит фокус ввода.


Chorniy   (2008-02-26 00:38:00) [7]


> Leonid Troyanovsky ©   (25.02.08 23:40) [4]

спасибо, находить окна я научился. Посылаю сообщение всем, окнам которые имеются у игры (5 штук), однако никаких действий не происходит.

два варианта происходящего:

1. игра обрабатывает события мыши не через виндовские сообщение (такое вообще возможно???)

2. т.к. окно неактивное, то клик оно не обрабатывает (
> Неактивным окнам нет дела до событий ввода.
) Но почему тогда оно отлично обрабатывает сообщение нажатия клавиши? будучи все так же неактивным.

подскажите пожалуйста какой вариант вернее... или напишите свой.


Leonid Troyanovsky   (2008-02-25 23:40:00) [8]


> Chorniy   (25.02.08 23:21) [2]

> почему функция GetParent(Form1.Handle) возвращает ноль,
> а не Application.Handle?

Потому, что оно ему не тот parent.
See also: GetWindowLong with GWL_HWNDPARENT.

--
Regards, LVT.


Leonid Troyanovsky   (2008-02-25 23:34:00) [9]


> Chorniy   (25.02.08 20:51)  

> как сделать чтобы сообщения обрабатывались, и возможно ли
> вообще послать сообщения о клике мыши на неактивное окно?

Неактивным окнам нет дела до событий ввода.

--
Regards, LVT.


Chorniy   (2008-02-25 23:21:00) [10]

Продолжаю разбираться с ситуацией.

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

ВОПРОС:
почему функция GetParent(Form1.Handle) возвращает ноль, а не Application.Handle? и как зная Application.Handle найти Form1.Handle?


Мк30   (2008-02-25 22:29:00) [11]

Удалено модератором


Наверх

Титульная страница Поиск, карта сайта Написать письмо