1

Тема: AHK: Не показывать контекстное меню при двойном ПКМ

Собственно мне сделали скрипт при двойном ПКМ производит прокрутку вверх-вниз в проводнике. Нужно чтобы при двойном ПКМ не появлялось контекстное меню.

;#NoTrayIcon
x_scroll = 0
~RButton::
IfWinNotActive, ahk_class CabinetWClass
  return
if (A_PriorHotkey <> "~RButton" or A_TimeSincePriorHotkey > 400)
  {
    KeyWait, RButton
    return
  }
x_scroll := ! x_scroll
if x_scroll
  Send, ^{End}
else
  Send, ^{Home}
return 

2

Re: AHK: Не показывать контекстное меню при двойном ПКМ

О как, не прошло и пяти лет: AHK: Как задать нажатие клавиш Home и End на средий клик мыши.
Поставьте уже программу для управления жестами мыши и не мучайте autohotkey, пожалуйста.
Дарю: 1, 2, 3.

3 (изменено: villla777, 2017-10-29 22:26:16)

Re: AHK: Не показывать контекстное меню при двойном ПКМ

stealzy
Я вроде никого не мучаю. Не прижилась средняя кнопка, захотелось посадить на ПКМ, что здесь криминального? Поставил скрипт жестов, но никак не могу добиться чтобы он в браузер не лез, а только в проводнике работал. Удалил всё из дефолта, по удалял все пункты browser, и всё равно лезет. Как его выставит только на проводник?
https://autohotkey.com/boards/viewtopic.php?t=31859

4 (изменено: svoboden, 2017-11-26 07:49:39)

Re: AHK: Не показывать контекстное меню при двойном ПКМ

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

#If WinActive("ahk_class CabinetWClass") or WinActive("ahk_class Progman")

RButton::
press++
  SetTimer, start, -1
return

start:
Sleep 250
if press = 1
Send {RButton}
SetTimer, start, Off
if press = 2
r := !r ? 1 : 0
if r = 1
Send {End}
else if r = 0
Send {Home}
press := ""
return

5

Re: AHK: Не показывать контекстное меню при двойном ПКМ

svoboden, что за странное выражение?

r := !r ? 1 : 0

6

Re: AHK: Не показывать контекстное меню при двойном ПКМ

svoboden
В проводнике код работает нормально, но в браузере, трее, в других окнах, контекстное меню пропало, а без него никак.

7 (изменено: svoboden, 2017-11-04 11:42:03)

Re: AHK: Не показывать контекстное меню при двойном ПКМ

Блин, и вправду так работает.

Send % (r := !r) ? "{End}" : "{Home}"

Просто без скобок в одну сторону только срабатывало. Просто поначалу сложно разобрать, почему не работает, вот и приходиться выдумывать все подряд.

8

Re: AHK: Не показывать контекстное меню при двойном ПКМ

Уберите строку:

#If WinActive("ahk_class CabinetWClass") or WinActive("ahk_class Progman")

9

Re: AHK: Не показывать контекстное меню при двойном ПКМ

svoboden
Понятно, спасибо. А это не надо заменять или как?
что за странное выражение?
r := !r ? 1 : 0

10

Re: AHK: Не показывать контекстное меню при двойном ПКМ

svoboden пишет:

сложно разобрать почему не работает

Приоритет операции присваивания ниже чем у тернарного оператора.
Порядок приоритетов тут: Справка → Переменные и выражения или Basic Usage → Variables and Expressions.

11

Re: AHK: Не показывать контекстное меню при двойном ПКМ

stealzy пишет:

Приоритет операции присваивания ниже чем у тернарного оператора.

Как это влияет на данный код?

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

12

Re: AHK: Не показывать контекстное меню при двойном ПКМ

Alectric

r:=true
MsgBox % (r := !r) ? "{End}" : "{Home}"
MsgBox % "r = " r
r:=true
MsgBox % r := !r ? "{End}" : "{Home}"
MsgBox % "r = " r

13

Re: AHK: Не показывать контекстное меню при двойном ПКМ

villla777 пишет:

А это не надо заменять или как?
что за странное выражение?
r := !r ? 1 : 0

Странное оно в том, что конструкция if-else здесь лишняя, так как и без нее переменная r после исполнения "r := !r" будет либо 1 либо 0.

r := !r
msgbox % r

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

14

Re: AHK: Не показывать контекстное меню при двойном ПКМ

Malcev
Понятно, спасибо.