1 (изменено: pserg, 2012-12-17 14:22:58)

Тема: AHK: Отключение переназначения RButton

Имеется код с GUI, переопределяющий правую кнопку мыши.


Rbutton::
действие
Return

Хотел бы, после выполнения определенных действий (закрытие окна с настройками), вернуть на ПКМ вызов контекстного меню.
Просмотрел справку, форум поиском, но не нашел ответа (может быть, он на поверхности...)
p.s. При повторном открытии GUI с настройками для изменения параметров также хотелось бы включать свои действия по ПКМ.
Заранее спасибо за ответ.

2

Re: AHK: Отключение переназначения RButton

pserg, ознакомься с этой темой, отредактируй заголовок.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Отключение переназначения RButton

2 teadrinker
прошу прощения, поправил заголовок.

4

Re: AHK: Отключение переназначения RButton

Команда Hotkey динамически включает и отключает горячие клавиши.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: pserg, 2012-12-17 16:57:22)

Re: AHK: Отключение переназначения RButton

Я пробовал

Hotkey, Rbutton, off

но контекстное меню с закрытым GUI не увидел.
А есть ли принципиальные отличия, где вставлять Hotkey - в обработчик кнопки закрытия окна, или в каждый обработчик нужно добавлять?
Я вставил в

F11::
{
 Gui, Show
Hotkey , Rbutton, on
 Exit
}
F12::ExitApp

Вроде бы, заработало. Но как-то нелогично - при открытии окна менять обработку Rbutton.

6

Re: AHK: Отключение переназначения RButton

Кажется, понял, в чём был косяк - я ОС (w7 x64) на рабочем компе неделями не перезагружаю, возможно, возникли проблемы взаимодействия с драйвером мыши. Сегодня пришлось перезапускать - и теперь контекстное меню работает.
Вопрос снят.

7 (изменено: creature.ws, 2012-12-17 17:07:11)

Re: AHK: Отключение переназначения RButton

Gui, Show, w300 h300, Какой-то заголовок

#If ClickAt("Какой-то заголовок")
    RButton::SoundBeep
#If

ClickAt(winTitle) {
    MouseGetPos,,, hWnd
    return WinExist(winTitle . " ahk_id" . hWnd)
}

8 (изменено: pserg, 2012-12-17 17:43:13)

Re: AHK: Отключение переназначения RButton

Раз уж завёл тему, отчитаюсь, вдруг кому ещё пригодится:
Чтобы переназначение ПКМ (и т.п.) работало только в определенный момент (в моём случае - когда открыто окно с настройками по F11), нужно выключать его при закрытии (кнопка ОК), и включать при открытии (F11).
Скелет программы такой:


<описание элементов GUI>

Rbutton::
<действия>
Return

ButtonOK:
 MsgBox Изменения приняты. 
 Hotkey, Rbutton, off
 Gui, Submit
Return

< нужные обработчики кнопок GUI>

F11::
{
 Gui, Show
Hotkey, Rbutton, on
 Exit
}
F12::ExitApp

Так вроде бы всё работает (меня, по крайней мере, устроило).

9

Re: AHK: Отключение переназначения RButton

creature.ws пишет:
Gui, Show, w300 h300, Какой-то заголовок

#If ClickAt("Какой-то заголовок")
    RButton::SoundBeep
#If

ClickAt(winTitle) {
    MouseGetPos,,, hWnd
    return WinExist(winTitle . " ahk_id" . hWnd)
}

Возможно, это и более правильный путь, но в моём случае это не совсем подходит. Заранее извиняюсь за неполное описание ситуации - подумал, это некритично.
Мне нужно в открытое окно настроек передавать по правой клавише имя некоторого окна из запущенных приложений. то есть, я заранее не знаю "ahk_id".

В любом случае, спасибо.

10 (изменено: creature.ws, 2012-12-18 07:03:04)

Re: AHK: Отключение переназначения RButton

то есть, я заранее не знаю "ahk_id".

Это выглядит как аргумент доказывающий неприменимость примера из сообщения #7, но ahk_id для его работы знать и не нужно.

Использование #if условие подразумевает, что условие будет выполняться каждый раз при активации горячей клавиши расположенной ниже #if.

Использование Hotkey «включает» обработку нажатия лишь «когда нужно», но горячая клавиша будет работать не только при манипуляциях в определённом окне, а до тех пор, пока не будет отключена.

Если есть желание изменить обработку кликов или нажатий в «собственноручно созданном» окне — обратите внимание на оконные сообщения

11

Re: AHK: Отключение переназначения RButton

creature.ws пишет:

ahk_id для его работы знать и не нужно.

Использование #if условие подразумевает, что условие будет выполняться каждый раз при активации горячей клавиши расположенной ниже #if.

Использование Hotkey «включает» обработку нажатия лишь «когда нужно», но горячая клавиша будет работать не только при манипуляциях в определённом окне, а до тех пор, пока не будет отключена.

Если есть желание изменить обработку кликов или нажатий в «собственноручно созданном» окне — обратите внимание на оконные сообщения

Спасибо за разъяснение. Попробую и Ваш вариант.

12 (изменено: pserg, 2012-12-18 11:55:31)

Re: AHK: Отключение переназначения RButton

К сожалению, AHK у меня версии 1.0.48.3, которая не поддерживает ClickAt.
А в новой версии не компилятся файлы с комментариями, так что пользуюсь старой.

13

Re: AHK: Отключение переназначения RButton

pserg пишет:

А в новой версии не компилятся файлы с комментариями

У всех всё компилится.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: Отключение переназначения RButton

Проблемы из-за русских комментариев, помнится, были, если скрипт сохранялся не в UTF-8. Но ведь сейчас, вроде бы, кодировка по умолчанию стала ANSI. Или для компиляции осталось по-прежнему?

15

Re: AHK: Отключение переназначения RButton

Сейчас можно и в ANSI компилировать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Отключение переназначения RButton

В Unicode сохраняю и проблем не знаю!

17

Re: AHK: Отключение переназначения RButton

teadrinker пишет:

Сейчас можно и в ANSI компилировать.

Поставил версию L_x64 (1.1.9.1).
Да, компилируется с комментариями даже в ANSI.
Но размер скомпилированного файла подрос в 6 раз...

18

Re: AHK: Отключение переназначения RButton

pserg пишет:

Но размер скомпилированного файла подрос в 6 раз...

Видимо, раньше у вас после компиляции производилось сжатие, а сейчас нет.  Используйте для сжатия mpress. Положите в папку Compiler. Но чтобы компилятор начал её использовать, его, вроде бы, нужно один раз запустить и в его окне поставить галочку "использовать mpress".

19 (изменено: pserg, 2012-12-19 18:00:50)

Re: AHK: Отключение переназначения RButton

YMP пишет:

Видимо, раньше у вас после компиляции производилось сжатие, а сейчас нет.  Используйте для сжатия mpress.

Спасибо, попробую.
И еще, такой вопрос: есть опция, чтобы откомпилированный файл запускался в x86? А то в WinXp перестали запускаться вновь откомпилированные скрипты.

20

Re: AHK: Отключение переназначения RButton

Просто AutoHotkey, в котором компилируете, должен быть x86. Вы себе x64 поставили?

21

Re: AHK: Отключение переназначения RButton

В ahk2exe можно выбрать разрядность выходного EXE файла, а также ansi или unicode версию.

22

Re: AHK: Отключение переназначения RButton

YMP пишет:

Просто AutoHotkey, в котором компилируете, должен быть x86. Вы себе x64 поставили?

Поставил по ссылке AutoHotkey_L_Install.exe на w7 x64. Версия файла (и компилируемых, соответственно) 1.1.9.1. На w7 запускаются, на XP - нет.

23 (изменено: creature.ws, 2012-12-20 10:42:13)

Re: AHK: Отключение переназначения RButton

Ссылка в контекстном меню *.ahk файлов «Compile Script» ведёт к %ProgramFiles%\AutoHotkey\Compiler\Ahk2Exe.exe
Это исполняемый файл программы под общеупотребительным названием «ahk2exe».

24 (изменено: pserg, 2012-12-20 11:32:03)

Re: AHK: Отключение переназначения RButton

creature.ws пишет:

Ссылка в контекстном меню *.ahk файлов «Compile Script» ведёт к %ProgramFiles%\AutoHotkey\Compiler\Ahk2Exe.exe
Это исполняемый файл программы под общеупотребительным названием «ahk2exe».

Ну, это я уже нашел. Но пока пытался разобраться, сменил в редакторе версию исходника с ANSI на UTF-8. В итоге - нечитаемый текст. Пытался вернуть обратно - лучше не стало. Пытаюсь восстановить исходник...
Случайно не знаете, где нужно искать текст исходника, который распаковыватся из исполняемого скрипта при запуске?
p.s. Process Monitor ничего не нашел, только вызовы dll...

25

Re: AHK: Отключение переназначения RButton

pserg пишет:

Поставил по ссылке AutoHotkey_L_Install.exe на w7 x64. Версия файла (и компилируемых, соответственно) 1.1.9.1. На w7 запускаются, на XP - нет.

Этот установщик предоставляет выбор, какую версию ставить, 32 или 64 бита, Unicode или ANSI.

Вот этот скрипт запустите, чтобы узнать, что у вас стоит.


MsgBox, % (A_PtrSize = 4? " x86":" x64") . (A_IsUnicode? " Unicode":" ANSI")

26 (изменено: pserg, 2012-12-20 13:17:30)

Re: AHK: Отключение переназначения RButton

YMP пишет:

Этот установщик предоставляет выбор, какую версию ставить, 32 или 64 бита, Unicode или ANSI.

ставил по умолчанию, видимо, не обратил внимание на возможность выбора. Старые версии ставились проще.

YMP пишет:

Вот этот скрипт запустите, чтобы узнать, что у вас стоит.

x64 Unicode
И что, если исходники сохранены в ANSI - не скомпилирует?
p.s. Кажется, понял - если выбрать один из трех вариантов установки, он и будет режимом по умолчанию. Так?
Запустил анинстал, выбрал "изменить" и 32 ANSI. Теперь скрипт пишет: x86 ANSI.

27

Re: AHK: Отключение переназначения RButton

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

28

Re: AHK: Отключение переназначения RButton

pserg пишет:

x64 Unicode
И что, если исходники сохранены в ANSI - не скомпилирует?

Нет, в этом (x64) была причина того, что скомпиленный скрипт не работал на XP.
Лучше, действительно, x86 Unicode. Тогда, если надо будет в скрипте использовать какие-то необычные символы, можно будет сохранить скрипт в UTF-8 и они правильно отобразятся.

29 (изменено: pserg, 2012-12-20 15:17:08)

Re: AHK: Отключение переназначения RButton

YMP пишет:

Лучше, действительно, x86 Unicode.

Хорошо, преобразовал в уникод х86.

Но у меня в новой версии почему-то при компиляции ругается на строку

Gui, Add, Edit, x+7 vNameDlg String Limit200,

Error: Invalid option

При этом, компиляция файла проходит успешно, но при запуске - та же ошибка.
Что сломалось?

p.s. Убрал "String" - всё скомпилировалось и заработало... Странно, на старой версии и так работало.

30

Re: AHK: Отключение переназначения RButton

А разве есть такая опция "String"? В опции нельзя писать, что попало.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

31

Re: AHK: Отключение переназначения RButton

teadrinker пишет:

А разве есть такая опция "String"? В опции нельзя писать, что попало.

Возможно, опции такой и нет, но в версии 1.0.48.3 как-то работало...
Может быть, в новой версии улучшена проверка исходного кода при компиляции.

32

Re: AHK: Отключение переназначения RButton

Стало быть, старая версия игнорировала отсебятину в опциях, а новая не хочет.