1

Тема: AHK: Отправление кликов с модификаторами функцией PostMessage

Возможно-ли с помощью функции PostMessage отправлять клики с модификаторами (Ctrl/Alt/Shift)? Также интересует как реализовать посыл нажатий клавиш с помощью этой функции, есть-ли такая возможность?


Или возможности этой функции ограничиваются этим списком:
http://www.autohotkey.com/docs/misc/SendMessageList.htm


ps: работа осуществляется с ява-приложением находящимся в неактивном состоянии и не реагирующим на команды вроде Send/SendRaw/ControlClick, только PostMessage

2

Re: AHK: Отправление кликов с модификаторами функцией PostMessage

Нажатия клавиш — это сообщения WM_KEYDOWN, WM_KEYUP. Клики — сообщения WM_LBUTTONDOWN, WM_LBUTTONUP и аналогичные для других кнопок. С модификатором, видимо, означает, что клику предшествует сообщение WM_KEYDOWN для клавиши-модификатора, а за кликом следует WM_KEYUP для неё. Почитайте на MSDN про параметры этих сообщений: WM_KEYDOWN.

3

Re: AHK: Отправление кликов с модификаторами функцией PostMessage

YMP пишет:

Нажатия клавиш — это сообщения WM_KEYDOWN, WM_KEYUP. Клики — сообщения WM_LBUTTONDOWN, WM_LBUTTONUP и аналогичные для других кнопок. С модификатором, видимо, означает, что клику предшествует сообщение WM_KEYDOWN для клавиши-модификатора, а за кликом следует WM_KEYUP для неё. Почитайте на MSDN про параметры этих сообщений: WM_KEYDOWN.

Благодарю за ответ, проглядел этот параметр. Только не понятно где брать lParam для каждой отдельной клавиши. Пробовал брать значения из приведеной статьи, чтото не выходит.
Для пробы попытка клика с шифтом LSHIFT 0xA0:

   PostMessage, 0x100, 1, 0xA0, %cont%,  ahk_id %id%
   
   PostMessage, 0x201, 1, ((y<<16)^x), %cont%,  ahk_id %id%
   PostMessage, 0x202 , 0, ((y<<16)^x), %Cont%, ahk_id %id%
   
   PostMessage, 0x101 , 0, 0xA0, %Cont%, ahk_id %id%

Если не затруднит можно  пример нажатия клавиши.

4

Re: AHK: Отправление кликов с модификаторами функцией PostMessage

Рабочего кода на эту тему у меня нет, а быстро на коленке набросать не удаётся. Какие-то тут тонкости, видимо, которых я не знаю. Если никто больше не подскажет, завтра ещё поковыряюсь.

5 (изменено: newbie, 2013-01-07 20:28:03)

Re: AHK: Отправление кликов с модификаторами функцией PostMessage

YMP пишет:

Рабочего кода на эту тему у меня нет, а быстро на коленке набросать не удаётся. Какие-то тут тонкости, видимо, которых я не знаю. Если никто больше не подскажет, завтра ещё поковыряюсь.

Ясно, у меня пока тоже попытки безуспешны. И поиск не радует.
Но, как говориться: "будем искать" ©

6

Re: AHK: Отправление кликов с модификаторами функцией PostMessage

В Блокноте клик с шифтом работает вот так:


F11::
    id := WinExist("A")
    cont = Edit1
    x := 200, y := 200
    PostMessage, 0x201, 4, ((y<<16)|x), %cont%, ahk_id %id%
    PostMessage, 0x202, 4, ((y<<16)|x), %cont%, ahk_id %id%
Return

Это видно по выделяющемуся тексту. В других программах, видимо, нужно знать, в какой контрол это посылать. Пробовал получать контрол через MouseGetPos и ControlGetFocus, но не фурычит.

Клавиша шифт отдельно посылается так:


PostMessage, 0x100, 0x10, 0x2A0001 , %cont%, ahk_id %id%
PostMessage, 0x101, 0x10, 0xC02A0001, %cont%, ahk_id %id%

2A — сканкод, остальное — флаги.

7 (изменено: newbie, 2013-01-08 15:59:37)

Re: AHK: Отправление кликов с модификаторами функцией PostMessage

YMP пишет:

В Блокноте клик с шифтом работает вот так:


F11::
    id := WinExist("A")
    cont = Edit1
    x := 200, y := 200
    PostMessage, 0x201, 4, ((y<<16)|x), %cont%, ahk_id %id%
    PostMessage, 0x202, 4, ((y<<16)|x), %cont%, ahk_id %id%
Return

Это видно по выделяющемуся тексту. В других программах, видимо, нужно знать, в какой контрол это посылать. Пробовал получать контрол через MouseGetPos и ControlGetFocus, но не фурычит.

Клавиша шифт отдельно посылается так:


PostMessage, 0x100, 0x10, 0x2A0001 , %cont%, ahk_id %id%
PostMessage, 0x101, 0x10, 0xC02A0001, %cont%, ahk_id %id%

2A — сканкод, остальное — флаги.

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