<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=18460</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=18460&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ».]]></description>
		<lastBuildDate>Fri, 25 Jul 2025 03:11:01 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162568#p162568</link>
			<description><![CDATA[<div class="quotebox"><cite>Drebin893 пишет:</cite><blockquote><p>Нужно сделать так, чтобы этот скрипт работал только если зажата правая кнопка мыши!<br />То есть, когда я зажимаю и держу правую кнопку мыши, а потом когда мне нужно, я нажимаю и держу левую кнопку мыши, и начинаются &quot;спам&quot; ЛКМ допустим каждые 100 миллисекунд, пока не отпущу ЛКМ или ПКМ.</p></blockquote></div><p>Будет лучше, если вы напишете для чего именно вам нужен этот скрипт. По описанию он очень похож на обычную автотапалку для шутеров (стрельба очередью из неавтоматического оружия). Я угадал? Просто есть ряд специфических нюансов, которые нужно учитывать именно для автотапалки. Без которых она работать будет довольно условно. Или пользоваться ей будет не очень что бы удобно.</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Fri, 25 Jul 2025 03:11:01 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162568#p162568</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162524#p162524</link>
			<description><![CDATA[<p>Так можно только в случае, если активно определённое приложение, и правая кнопка в нём совсем не нужна. Мне показалось, что ТС хочет, чтобы правая кнопка выступала в качестве модификатора. При этом вряд ли его устроит, чтобы она полностью потеряла функциональность. Мне пока не удавалось добиться такого без сайд-эффектов.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 22 Jun 2025 23:04:07 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162524#p162524</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162523#p162523</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Sun, 22 Jun 2025 20:31:28 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162523#p162523</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162522#p162522</link>
			<description><![CDATA[<p>Ну, это смотря как использовать. Напишите свой вариант, может подойдёт.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 22 Jun 2025 19:36:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162522#p162522</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162521#p162521</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Я как раз использую ПКМ для управлением при просмотре видео, очень удобно когда есть только беспроводная мышь под рукой.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Sun, 22 Jun 2025 19:15:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162521#p162521</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162520#p162520</link>
			<description><![CDATA[<p>Не советовал бы использовать правую кнопку мыши подобным образом. Когда вы её отпустите, появится контекстное меню объекта, над которым была мышь.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 22 Jun 2025 11:27:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162520#p162520</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Активация кода зажатием ПКМ и выключение отпусканием ПКМ]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=162518#p162518</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Drebin893)]]></author>
			<pubDate>Sun, 22 Jun 2025 07:02:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=162518#p162518</guid>
		</item>
	</channel>
</rss>
