Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

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

 
Chorniy   (2008-02-25 20:51) [0]

Имеем:

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

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

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

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


 
Мк30 ©   (2008-02-25 22:29) [1]

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


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

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

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

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


 
Leonid Troyanovsky ©   (2008-02-25 23:34) [3]


> Chorniy   (25.02.08 20:51)  

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

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

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-02-25 23:40) [4]


> Chorniy   (25.02.08 23:21) [2]

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

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

--
Regards, LVT.


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


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

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

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

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

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

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


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

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


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

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


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

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

;))))


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


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

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


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


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

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

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


 
Alexander_Warlock ©   (2008-03-16 03:32) [11]

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



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1205908465
zorik
2008-03-19 09:34
2008.04.13
Доступ класса к главному класса и к его свойствам


2-1205429487
Dark
2008-03-13 20:31
2008.04.13
String


15-1203709432
tesseract
2008-02-22 22:43
2008.04.13
MS сдаёться ?


2-1205828693
Aleksandrrr
2008-03-18 11:24
2008.04.13
вложенный запрос


3-1195444789
Бакук
2007-11-19 06:59
2008.04.13
Слетает «привязка» к датамодулю