Главная страница
    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.47 MB
Время: 0.006 c
6-1184599713
yaJohn
2007-07-16 19:28
2008.04.13
ISAPI DLL, файл больше 2 Гб


15-1203994796
Slider007
2008-02-26 05:59
2008.04.13
С днем рождения ! 26 февраля 2008 вторник


2-1205669366
NSer
2008-03-16 15:09
2008.04.13
Как присвоить DateTimePicker = 01.01.2008 ?


2-1205924964
SKIPtr
2008-03-19 14:09
2008.04.13
использование TValueListEditor


3-1195656537
umbra
2007-11-21 17:48
2008.04.13
одно ADOConnection для нескольких компонентов ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский