Генерация сообщений

vikusik73

Господа программеры под Виндовззз.
Может кто-нибудь знает, как самому генерировать сообщения? Я имею ввиду сообщения от мыши, клавиатуры и т.д. - WM_LBUTTONDOWN, WM_LBUTTONDBLCLK и проч. Т.е. чтоб это сообщения генерировалось не только по нажатию кнопки или двойному щелчку, а по какому-то определенному мной действию.
В MSDN'е я уже покопался - пока без результата.

yolki

А чем плох SendMessage(hwnd,Msg,LParam,WParam)?, например эмуляция нажатия кнопочки мышки:


SendMessage(hWnd,WM_MOUSEDOWN,MAKELPARAM(x,yMAKEWPARAM(ShiftState,ButtonState


По-моему так.

yolki

Есть еще PostMessage - отличается от SendMessage тем, что SendMessage ставит сообщение в конец очереди сообщений, а PostMessage - в начало

vikusik73

Все бы хорошо, но меня смущает необходимость указания дескриптора окна, которому отсылается сообщение. В моем случае он неизвестен. Вроде бы выходом может служить HWND_BROADCAST... Но тоже не совсем хорошо. Если все запущенные программы получат это сообщение, то это не есть хорошо. Нужно чтобы получала та, у которой окно в данный момент поверх всех.
Ну да ладно. В любом случае огромное спасибо!

yolki

Есть способы узнать дескриптор самого верхнего окна. как-то ведь WinSight это делает?

vikusik73

Наверное есть. Вот ищу...

ol4a21

>Есть еще PostMessage - отличается от SendMessage тем, что SendMessage ставит сообщение в конец очереди сообщений, а PostMessage - в начало
неправильно
гоу читать маны

ol4a21

Напипши что вообще нужно сделать
Наверняка есть простой способ

vikusik73

Вообще? Гы-гы... Общая цель такова - управлять компом без помощи мышки и клавы, например голосом или взглядом. Распознавать речь или определять направление взгляда можно сказать умеем. Как при этом перемещать курсор (опять-таки без всех этих привычных девайсов я знаю. Осталось только "щелкнуть". Т.е. сгенерить сообщение о щелчке, не нажимая при этом кнопки. При этом, очевидно, сообщение должно уходить к самому верхнему окну, а не ко всем открытым.
Интересно, насколько понятнее все стало?..

ol4a21

>Вообще? Гы-гы... Общая цель такова - управлять компом без помощи мышки и клавы, например голосом или взглядом.
Мечты, мечты...
>Распознавать речь или определять направление взгляда можно сказать умеем.
Мда... решили все мировые проблемы, но запарились с какой-то ерундой
>Как при этом перемещать курсор (опять-таки без всех этих привычных девайсов я знаю. Осталось только "щелкнуть". Т.е. сгенерить сообщение о щелчке, не нажимая при этом кнопки. При этом, очевидно, сообщение должно уходить к самому верхнему окну, а не ко всем открытым.
Интересно, насколько понятнее все стало?..
ИМХО если по делать по уму, то надо писать "драйвер мыши", который на самом деле будет не с мышью ботать, а с вашим магическим интерфейсом
А если в таком ключе, как выше, посмотри, например, GetForegroundWindow
Только все равно это неправильно, потому что мышью можно и вне активного окна ткнуть

vikusik73

"Мечты, мечты... Мда... решили все мировые проблемы, но запарились с какой-то ерундой". Ну тут я с тобой спорить не буду, просто не хочу. Не веришь в силу разума - твои проблемы.
"...мышью можно и вне активного окна ткнуть". Совершенно верно. Вот Маздай-то как-то ловит это! И я хочу!

Lancelot

> Вот Маздай-то как-то ловит это! И я хочу!
Уж не методом ли перебора он это ловит?
IMHO pk прав - самое правильное решение - накатать драйвер.

vikusik73

Ну что ж, спасибо!
Дело за малым - научиться драйвера катать.

Lancelot

DDK в зубы и вперёд.
Надеюсь что Windows 95 нет в списке поддерживаемых платформ.

ol4a21

В DDK даже вроде какие-то примеры-заготовки для мышиных драйверов есть
2Anonymous
а у тебя случаем нет доков по писанию драйверов под Вин (NT/2k)
доки из DDK не считаются

vikusik73

А где взять этот DDK? В MSDN-то его нету? Или я опять плохо искал?

Lancelot

> а у тебя случаем нет доков по писанию драйверов под Вин (NT/2k)
Неа.
Мне вроде и DDK хватает + сырцы из инета + плюс списки рассылки типа ntdev.

vikusik73

Спасибо!

Pchela2008

а ::EnumChildWindows, ::EnumWindows и иже с ними - не то, что хочется?
Оставить комментарий
Имя или ник:
Комментарий: