1

Тема: AHK: изменение вида курсора

Снова здравствуйте.

Решил, раз уж выбрался к Вам, так надо "по полной"

Есть слегка модифицированный скрипт Easy Window Dragging (EWD) от ANDROGEN. Модификации следующие:
- изменен хоткей на MButton
- дописан кусочек скрипта, чтобы однократные нажатия средней клавишей мышки обрабатывались как нажатие средней клавиши мышки не включая передвижения окна.

Дописанный кусочек кода необходим для некоторых приложений где удобно использовать однократное нажатие MButton-а (Opera, FoxitPDFReader, etc.). Так вот чтобы не захламлять скрипт и не писать под Оперу отдельный скрипт (ибо в ней и есть проблемка) я решил обратиться к Вам.

Проблемма в том, что после исполнения скрипта (срабатывания нажатия на ссылке) курсор принимает вид "стрелка с песочными часами" пока не загрузится в фоне страница на соседней закладке, а после этого принимает вид - обычной стрелки. Но курсор я не двигал и он находится над ссылкой. Приходится дергать мышку чтобы курсор вышел из зоны ссылки и опять вернулся на нее. После такого "обращения" с ним - он принимает вид "пальца". "Достает" при необходимости открытия серии ссылок в фоне.

Есть ли какаянибудь команда обновляющая курсор или присваивающая ему тип? ...я не нашел.

Привожу лиш кусок кода (если надо приведу весь):

EWD_WatchMouse: ; подпрограмма обработки событий в таймере
    EWD_Work = 1 ; флаг, что подпрограмма выполняется (он нужен для корректной работы закрытия окон по Escape)
    GetKeyState, EWD_LButtonState, MButton, P ; проверить нажата ли средняя кнопка мыши
    If EWD_LButtonState = U ; если кнопка отпущена, то закончить перемещение окна...
    {
        SetTimer, EWD_WatchMouse, off ; отключить таймер
        EWD_Work = ; сбрасываем флаг, что подпрограмма выполняется

                            ;отсюда - добавлено от меня
        WinGetPos, EWD_X2, EWD_Y2,,, ahk_id %EWD_MouseWin%  ;берем текущую позицию курсора
        If (EWD_OriginalPosX=EWD_X2 and EWD_Y2=EWD_OriginalPosY) ;если она такаяже, то..
        {
            Send, {MButton Down}
            Sleep, 100                                 ; иначе срабатывало 50\50.
            send, {Mbutton Up}
        }
        Return ; конец подпрограммы, закончить обработку горячей клавиши
    }
;...... дальше идет проверка нажатия клавиши Esc итп.
;...
;.
Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

2

Re: AHK: изменение вида курсора

Mikki пишет:

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

Тогда просто вот так:

#IfWinNotActive ahk_class OpWindow
MButton::
; код, передвигающий окно
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: изменение вида курсора

На Опере тоже надо чтоб передвигалось.

Вариант с отдельным кодом для Оперы мне известен (через опрос типа курсора: если Unknown, то ...) Просто хочется красиво все решить. Перерисовал курсор и все. Мож задержка какаянить еще нужна, чтоб окно успело обработать местоположение курсора. Понимать бы еще почему это не происходит автоматически (обработка местоположения курсора) после срабатывания скрипта.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

4

Re: AHK: изменение вида курсора

Mikki пишет:

На Опере тоже надо чтоб передвигалось.

Тогда так:

#IfWinNotActive ahk_class OpWindow
MButton::
; код, передвигающий окно

#IfWinActive ahk_class OpWindow
~MButton::
; код, передвигающий окно
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: Mikki, 2010-11-17 16:39:59)

Re: AHK: изменение вида курсора

Из своих мытарств понял, что это "фишка Оперы". При отключенном скрипте миддлкей-клик на ссылке ведет себя точно так же.

Собственно - и поправлять то ни чего не надо - мидлкейклик срабатывает вне зависимоти от вида курсора.

Что-то я  сегодня вообще, и себя и всех запутал.

Спасибо teadrinker-у за попытки разобраться.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди