Текущий архив: 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.47 MB
Время: 0.006 c