Эмуляция нажатия левой кнопки мыши, VB+WinApi

Elina74

Есть книга по Visual Basic в электронном варианте:
При ее просмотре все управление осуществляется мышью. Более всего меня достало листание страниц кнопочками "Вперед" и "Назад" а также то, что для просмотра одной страницы сверху вниз надо мышью жать на полосу прокрутки, и нельзя пользоваться кнопками.
Возникла идея: при нажатии кнопок "PgUp", "PgDown", "Up", "Down" посылать этой программе такие сообщения, какие возникают при нажатии соответствующих кнопок мышью.
Что для этого нужно сделать?
Ниже приводится мой пока неудачный (нерабочий) вариант, как я это делал:
С помощью Spy++ я нашел, что при нажатии кнопки "Вперед" происходят такие события:

Отсюда узнаю координаты, в которых должна находиться мышь:
x = 155 dec = 9B hex
y = 64 dec = 40 hex
Для посылки сообщения окну надо знать его HWND, для этого я делаю активным окно с кнопками и нажимаю "магическую" кнопочку F12 (ее код: 7B hex а в своей проге смотрю, какое окно является активным:
H2 = GetActiveWindow
If (GetAsyncKeyState(&H7B) And 1) <> 0 Then
MsgBox ("OK" + vbCrLf + Format(H2
EndIf
Проверяю, что HWND тот же самый, что дает мне Spy++ (в данном случае 840 dec = 348 hex)
И посылаю сообщение окну:
Dim wParam, Result As Long
wParam = &H409B
Result = SendMessage(H2, WM_LBUTTONDOWN, MK_CONTROL, wParam)
MsgBox ("Message to " + Format(H3) + " Result=" + Format(Result
К сожалению, оно не работает. Может быть нужно посылать все сообщения, как в списке, который дает Spy++ ? Или причина еще в чем-то?

0000

Может все дело в том, что сообщение надо послать не окну программы, а дочернему (владеющему фокусом)?

xz_post

Попробуйте дополнительно отправить еще WM_LBUTTONUP - у меня это работает с LIstBox...
Или заюзайте функции mouse_event или SendInput
Оставить комментарий
Имя или ник:
Комментарий: