<?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=17436&amp;type=atom" />
	<updated>2022-10-28T20:33:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=17436</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Заблокировать Левую кнопку мыши, пока выполняется условие.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155437#p155437" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong><br />Он громоздкий, но благодаря вам, я решил свою проблему.<br /></p><div class="codebox"><pre><code>
HotKey, Numpad7, Start, On ;Задаём Numpad7 метку Start
return

Start:
HotKey, LButton, Lock, On ; Когда вызвали метку, сразу блочим ЛКМ
KeyWait, Numpad7, U ; Отпускаем Numpad7
SetTimer, LButtonOff, 100 ;Запускаем таймер, чтобы когда лкм отжали, скрипт об этом знал.
GetKeyState, state, LButton, P 
If state = U ; Проверяем зажатость ЛКМ, если не нажат, выйти из действий и просто прокрутить вверх.
{
   HotKey, LButton, Lock, Off
   SendInput {WheelUp}
   return
}
If state = D ; Если ЛКМ остался зажатым, изменяем метку для Numpad7.
   HotKey, Numpad7, Lock2, On

Lock:
Return

Lock2: ; Метка со вторым действием.
GetKeyState, state, LButton, P
if state = U ;Если ЛКМ всё же отпустили, то выйти из метки и вернуть всё как было.
   {
      HotKey, Numpad7, Start, On
      HotKey, LButton, Lock, Off
      SetTimer, LButtonOff, off
      return
   }
if state = D ; Если ЛКМ всё еще зажат, то выполняем прокрутку вниз.
   SendInput {WheelDown}
Return

;Таймер на проверку отжатия ЛКМ клавиши.
LButtonOff:
GetKeyState, state, LButton, P
if state = U
   {
      SetTimer, LButtonOff, off
      HotKey, Numpad7, Start, On
      HotKey, LButton, Lock, Off
   }
   return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Clannad5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39853</uri>
			</author>
			<updated>2022-10-28T20:33:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155437#p155437</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Заблокировать Левую кнопку мыши, пока выполняется условие.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155430#p155430" />
			<content type="html"><![CDATA[<p>Если верно всё понял:</p><div class="codebox"><pre><code>Numpad7::
KPress := 0
HotKey, vk1, Lock, On
KeyWait, % A_ThisHotkey, U
HotKey, vk1, Lock, Off

If (KPress = 0)
 ToolTip, Нажатий ЛКМ не было, 0,0
Else
 ToolTip, % &quot;Нажатий ЛКМ: &quot; KPress, 0,0
Return

Lock:
KPress++
ToolTip, % &quot;KPress: &quot; KPress, 0,0
Return</code></pre></div><p>Данный код позволит в зависимости от количества нажатий ЛКМ выполнять разные действия (если добавить).</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2022-10-28T16:47:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155430#p155430</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Заблокировать Левую кнопку мыши, пока выполняется условие.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155399#p155399" />
			<content type="html"><![CDATA[<p>Всем привет.<br />Решив сделать из одной кнопки два действия, я столкнулся с проблемой.</p><p>Этап действий:<br />1. Нажимаю на Numpad7<br />2. В этот момент нужно сразу же заблокировать любые нажатия левой кнопки мыши и поставить Keywait на отжатие Numpad7<br />3. После отжатия Numpad7 идёт условие: Если была зажата ЛКМ - выполнить одно действие. Если не была зажата - выполнить второе действие.</p><p>В момент 2 и 3, мне нужно чтобы любые ЛКМ нажатие по экрану блокировались, однако чтобы выполнялось условие на нажатие клавиши.<br />То есть это как если бы я в момент нажатие Numpad7 дописывал LButton::Return, однако так сделать нельзя.</p><p>Так как мне заблокировать ЛКМ в момент выполнения условия?</p><p>Вот примерные мои попытки:</p><div class="codebox"><pre><code>
Numpad7::
{
    KeyWait &quot;Numpad7&quot;,&#039;Up&#039;
    State := GetKeyState(&#039;LButton&#039;, &#039;P&#039;)
    if State = 1
        {
    loop 
        {
            State := GetKeyState(&#039;LButton&#039;, &#039;P&#039;)
            State2 := GetKeyState(&#039;Numpad7&#039;, &#039;P&#039;)
            if State = 1 and State2 = 1
                {
                KeyWait &quot;Numpad7&quot;, &#039;Up&#039;
                SendInput &quot;{WheelDown}&quot;
                }
            if State2 = 0
                break
        }
    }
    else
    SendInput &quot;{WheelUp}&quot;
}
</code></pre></div><p>Извините что код показываю в V2 виде, но для понимания я думаю смысл не утратится.<br />Суть в том, что в коде я никак не блокирую ЛКМ нажатие по экрану и из-за этого код становится нерабочим, т.к в редакторе работает колёсико только в том случае, если я не зажимаю ЛКМ по холсту.</p>]]></content>
			<author>
				<name><![CDATA[Clannad5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39853</uri>
			</author>
			<updated>2022-10-28T08:28:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155399#p155399</id>
		</entry>
</feed>
