<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18460&amp;type=atom" />
	<updated>2025-07-25T03:11:01Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=18460</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162568#p162568" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Drebin893 пишет:</cite><blockquote><p>Нужно сделать так, чтобы этот скрипт работал только если зажата правая кнопка мыши!<br />То есть, когда я зажимаю и держу правую кнопку мыши, а потом когда мне нужно, я нажимаю и держу левую кнопку мыши, и начинаются &quot;спам&quot; ЛКМ допустим каждые 100 миллисекунд, пока не отпущу ЛКМ или ПКМ.</p></blockquote></div><p>Будет лучше, если вы напишете для чего именно вам нужен этот скрипт. По описанию он очень похож на обычную автотапалку для шутеров (стрельба очередью из неавтоматического оружия). Я угадал? Просто есть ряд специфических нюансов, которые нужно учитывать именно для автотапалки. Без которых она работать будет довольно условно. Или пользоваться ей будет не очень что бы удобно.</p>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2025-07-25T03:11:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162568#p162568</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162524#p162524" />
			<content type="html"><![CDATA[<p>Так можно только в случае, если активно определённое приложение, и правая кнопка в нём совсем не нужна. Мне показалось, что ТС хочет, чтобы правая кнопка выступала в качестве модификатора. При этом вряд ли его устроит, чтобы она полностью потеряла функциональность. Мне пока не удавалось добиться такого без сайд-эффектов.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-06-22T23:04:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162524#p162524</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162523#p162523" />
			<content type="html"><![CDATA[<p>В моём случае полный перехват ПКМ, поэтому контекстного меню нет.<br />Предназначено для управления Ютубом и MPC плеером в полном экране. Клавиши правда нужно настроить под ускорение / Замедление / Сброс.</p><div class="codebox"><pre><code>WindowActions := {}	; Словари действий для разных окон (Грок v3 20-22.06.2025).
; Действия для MPC-BE:
WindowActions[&quot;ahk_class MPC-BE ahk_exe mpc-be64.exe&quot;] := {&quot;Up&quot;:&quot;PgUp&quot;, &quot;Down&quot;:&quot;PgDn&quot;, &quot;Left&quot;:&quot;Left&quot;, &quot;Right&quot;:&quot;Right&quot;, &quot;WheelDown&quot;:&quot;sc4A&quot;, &quot;WheelUp&quot;:&quot;vk6B&quot;, &quot;MButton&quot;:&quot;NumpadMult&quot;}
; Действия для YouTube (браузер, например Chrome):
WindowActions[&quot;ahk_class Chrome_WidgetWin_1 ahk_exe chrome.exe&quot;] := {&quot;Up&quot;:&quot;z&quot;, &quot;Down&quot;:&quot;sc4A&quot;, &quot;Left&quot;:&quot;j&quot;, &quot;Right&quot;:&quot;l&quot;, &quot;WheelDown&quot;:&quot;Volume_Down&quot;, &quot;WheelUp&quot;:&quot;Volume_Up&quot;, &quot;MButton&quot;:&quot;NumpadMult&quot;}

; Переменные для хранения координат
Global StartX := 0, StartY := 0, OtherButtonPressed := 0
Return

; Функция проверки, является ли окно поддерживаемым:
IsSupportedWindow(){
 Global WindowActions
 WinGet, ActiveWindow, ProcessName, A
 WinGetClass, ActiveClass, A
 ActiveWindowID := &quot;ahk_class &quot; ActiveClass &quot; ahk_exe &quot; ActiveWindow
 Return WindowActions.HasKey(ActiveWindowID)
}

; Функция для определения направления:
GetDirection(StartX, StartY, EndX, EndY){
 Static Threshold := 50	; Порог для определения движения (в пикселях).
 DeltaX := EndX - StartX, DeltaY := EndY - StartY, AbsX := Abs(DeltaX), AbsY := Abs(DeltaY)
 If (AbsX &lt; Threshold &amp;&amp; AbsY &lt; Threshold)
  Return &quot;&quot;	; Недостаточное движение.
 If (AbsX &gt; AbsY){
  If (DeltaX &gt; 0)
   Return &quot;Right&quot;
  Else
   Return &quot;Left&quot;
 } Else {
  If (DeltaY &gt; 0)
   Return &quot;Down&quot;
  Else
   Return &quot;Up&quot;
 }
}

; Функция для выполнения действия жеста:
ExecuteAction(WindowID, Gesture){
 Global WindowActions
 If (WindowActions.HasKey(WindowID)){
  Actions := WindowActions[WindowID]
  If (Actions.HasKey(Gesture)){
   SelectedKey := Actions[Gesture]
   Send, {%SelectedKey% Down}
   Sleep, 50
   Send, {%SelectedKey% Up}
  }
 }
}

; Горячие клавиши только для поддерживаемых окон +в полноэкранном окне:
#If IsSupportedWindow() And Get_Full()

RButton::
 OtherButtonPressed := 0
 MouseGetPos, StartX, StartY
 KeyWait, RButton
 If (OtherButtonPressed = 1)	; Если было нажатие др. клавиш - выход.
  Return
 MouseGetPos, EndX, EndY
 Direction := GetDirection(StartX, StartY, EndX, EndY)
 If (Direction){
  WinGet, ActiveWindow, ProcessName, A
  WinGetClass, ActiveClass, A
  ActiveWindowID := &quot;ahk_class &quot; ActiveClass &quot; ahk_exe &quot; ActiveWindow
  ExecuteAction(ActiveWindowID, Direction)
 }
 Else
  Send, {vk2}	; Обычное нажатие ПКМ.
Return

; Горячие клавиши для колёсика и средней кнопки только при зажатом ПКМ и в поддерживаемых окнах:
#If IsSupportedWindow() &amp;&amp; GetKeyState(&quot;RButton&quot;, &quot;P&quot;)

$WheelUp::	; Сокращение для 3 клавиш.
$WheelDown::
$MButton::
OtherButtonPressed := 1, Key := SubStr(A_ThisHotkey, 2)
WinGet, ActiveWindow, ProcessName, A
WinGetClass, ActiveClass, A
ActiveWindowID := &quot;ahk_class &quot; ActiveClass &quot; ahk_exe &quot; ActiveWindow, ExecuteAction(ActiveWindowID, Key)
KeyWait, % A_ThisHotkey, U
Return

#If

Get_Full(){	;00:13 08.02.2021	Определение полноэкранности окна:
 WinGetPos,,,W, H, A
 Mon := A_ScreenWidth + A_ScreenHeight	; Размеры экрана (основного).
 If (W+H &gt;= Mon)	; Если равно экрану или больше его:
  Return 1
 Return 0
}

</code></pre></div>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2025-06-22T20:31:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162523#p162523</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162522#p162522" />
			<content type="html"><![CDATA[<p>Ну, это смотря как использовать. Напишите свой вариант, может подойдёт.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-06-22T19:36:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162522#p162522</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162521#p162521" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong><br />Я как раз использую ПКМ для управлением при просмотре видео, очень удобно когда есть только беспроводная мышь под рукой.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2025-06-22T19:15:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162521#p162521</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162520#p162520" />
			<content type="html"><![CDATA[<p>Не советовал бы использовать правую кнопку мыши подобным образом. Когда вы её отпустите, появится контекстное меню объекта, над которым была мышь.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2025-06-22T11:27:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162520#p162520</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=162518#p162518" />
			<content type="html"><![CDATA[<p>Здравствуйте, помогите доработать скрипт, или возможно есть другой аналог нужного действия.</p><p>Нужно сделать так, чтобы этот скрипт работал только если зажата правая кнопка мыши!<br />То есть, когда я зажимаю и держу правую кнопку мыши, а потом когда мне нужно, я нажимаю и держу левую кнопку мыши, и начинаются &quot;спам&quot; ЛКМ допустим каждые 100 миллисекунд, пока не отпущу ЛКМ или ПКМ. Если правая кнопка мыши не зажата, то скрипт не должен работать и влиять на нажатия ЛКМ.<br />Дополню для лучшего понимания.<br />В примере кода скрип включается на F1 и выключается при повторном нажатии на F1.<br />Нужно включение сделать пока зажата ПКМ, а выключение когда отпускаю ПКМ.<br />Для удобства конечно можно дописать чтобы это работало только в конкретном приложении.</p><div class="codebox"><pre><code>; Вкл/выкл – F1
; Использование – просто зажми левую кнопку мыши

#noenv
#usehook
#singleinstance force
Hotkey, *~$LButton, Off

*~$LButton::
Loop
{
GetKeyState, LButtonState, LButton, P
If LButtonState = U
break
click
}
return

F1::
Hotkey, *~$LButton, Toggle
Soundplay, *120
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Drebin893]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=44912</uri>
			</author>
			<updated>2025-06-22T07:02:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=162518#p162518</id>
		</entry>
</feed>
