<?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=10984</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10984&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Событие при клике в заданных координатах окна».]]></description>
		<lastBuildDate>Tue, 10 May 2016 18:31:21 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103620#p103620</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, в данном случае, не запутался. Происходит зажатие ЛКМ на 150 мсек без сдвига - начинается ожидание. На текущий момент ожидание начинается тогда, когда ЛКМ зажимается как со сдвигом, так и без него.</p><p>На всякий случай, перефразирую. Если курсор не сдвигается при зажатой ЛКМ в течение 150 мсек, нечинается ожидание отжатия ЛКМ с дальнейшим ходом сценария.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 10 May 2016 18:31:21 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103620#p103620</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103619#p103619</link>
			<description><![CDATA[<div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>на позиции, где совершается клик.</p></blockquote></div><p>Вы уже совсем запутались в своих хотелках, и сами не помните чего хотели:<br /></p><div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>Однако я забыл подробнее описать тот момент, что ожидание должно включаться не просто после удержания, <strong>а удержания в одной позиции (координатах)</strong>, можно с погрешностью в 2-3 пикселя.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 10 May 2016 18:00:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103619#p103619</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103615#p103615</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, на позиции, где совершается клик. Т.е. если я задерживаю ЛКМ на одном месте, то начинается ожидание отпускания ЛКМ с дальнейшим ходом сценария.</p><p>Но, учитывая последнюю поправку, условие на удержание можно упразднить (или оставить с возможностью закомментирования на случай, если в нем нет необходимости) и заменить на условие, описаное в 26-ом посте.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 10 May 2016 14:42:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103615#p103615</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103614#p103614</link>
			<description><![CDATA[<div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>задерживаю ЛКМ на одной позиции</p></blockquote></div><p>На какой позиции?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 10 May 2016 13:29:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103614#p103614</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103613#p103613</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, задерживаю ЛКМ на одной позиции, после чего перемещаю в одну из сторон, но ничего не отправляется. В предыдущей редакции клавиши отправлялись должным образом.</p><p>Поправка: проверка на удержание требовалась для отличия от простого клика, и теперь пришла мысль о том, что в моем случае проверку на задержание можно заменить на проверку цвета под курсором. Т.е. если при нажатии на ЛКМ цвет пикселя под курсором соответствует заданному, то продолжать работу сценария.</p><div class="codebox"><pre><code>
LButton::
MouseGetPos sX, sY
PixelGetColor, Color, sX, sY
if (Color = &quot;0x222222&quot;) or (Color = &quot;0x191919&quot;){
...
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 10 May 2016 11:12:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103613#p103613</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103612#p103612</link>
			<description><![CDATA[<div class="codebox"><pre><code>SetDefaultMouseSpeed, 0
CoordMode, Mouse, Window

fault := 3 ; погрешность
 
#If NeedArea(0, 0, 30, 30, sX, sY)
LButton::
	Start := A_TickCount
	While GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
		Continue
	If (A_TickCount - Start &lt; 150)
	{
		Click
		Return
	}
	MouseGetPos eX 
    SendInput % eX - sX &lt; -fault ? &quot;^!+{vk50}{vk41}{Click &quot; sX &quot; &quot; sY &quot;}^!+{vk50}{vk42}&quot; 
				: eX - sX &gt; fault ? &quot;^!+{vk50}{vk42}{Click &quot; sX &quot; &quot; sY &quot;}^!+{vk50}{vk41}&quot; 
				: &quot;^!+{vk50}&quot;
    Return
#IfWinActive 

NeedArea(x1, y1, x2, y2, ByRef x, ByRef y) {
    MouseGetPos, x, y
	If (x &gt;= x1 &amp;&amp; x &lt;= x2 &amp;&amp; y &gt;= y1 &amp;&amp; y &lt;= y2)
        Return 1 
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 10 May 2016 11:01:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103612#p103612</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103611#p103611</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, спасибо, работает! Однако я забыл подробнее описать тот момент, что ожидание должно включаться не просто после удержания, а удержания в одной позиции (координатах), можно с погрешностью в 2-3 пикселя. Также мне сложно дается редактирование регулярных выражений, и у меня не получилось добавить дополнительное отправление клавиш перед <em>{a}</em> и <em>{b}</em>, а именно заменить <em>{a}</em> на <em>^!+{p}{a}</em> и аналогично <em>{b}</em> на <em>^!+{p}{b}</em>, вне зависимости от порядка их отправления (движения курсора).</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Tue, 10 May 2016 10:49:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103611#p103611</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103609#p103609</link>
			<description><![CDATA[<div class="codebox"><pre><code>
SetDefaultMouseSpeed, 0
CoordMode, Mouse

fault := 3 ; погрешность
 
#IfWinActive ahk_class Notepad++
LButton::
	MouseGetPos sX, sY
	Start := A_TickCount
	While GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
		Continue
	If (A_TickCount - Start &lt; 150)
	{
		Click
		Return
	}
	MouseGetPos eX 
    SendInput % eX - sX &lt; -fault ? &quot;{vk41}{Click &quot; sX &quot; &quot; sY &quot;}{vk42}&quot; : eX - sX &gt; fault ? &quot;{vk42}{Click &quot; sX &quot; &quot; sY &quot;}{vk41}&quot; : &quot;^!+{vk50}&quot;
    Return
#IfWinActive
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 10 May 2016 09:19:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103609#p103609</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=103445#p103445</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, Хотелось бы иметь усовершенствованный вариант. Помогите, пожалуйста, его реализовать:</p><p>После совершения зажатия ЛКМ на 150 мсек, запоминаются координаты положения курсора и начинается ожидание траектории движения курсора, но при движении ничего не отправляется, как в последней редакции, а при отпускании ЛКМ справа от места зажатия отправляется клавиша <em>{b}</em>, далее отправляется <em>MouseClick </em>в полученные вначале координаты и отправляется клавиша <em>{а}</em>. Если отпускается слева - то наоборот, сначала <em>{а}</em>, потом <em>MouseClick </em><em>{b}</em>. Если остается на месте - отправляется <em>{^!+p}</em> без <em>MouseClick </em>. Если ЛКМ была отпущена ранее 150 мсек после нажатия, т.е. без зажатия, то работает как обычно, т.е. отправлется LButton.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Sat, 07 May 2016 13:56:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=103445#p103445</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=98127#p98127</link>
			<description><![CDATA[<p>Спасибо! Пока не выяснил для себя, все ли работает так, как задумывалось. На досуге посмотрю внимательнее.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Sat, 24 Oct 2015 01:31:57 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=98127#p98127</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=98064#p98064</link>
			<description><![CDATA[<div class="codebox"><pre><code>
fault := 3 ; погрешность
 
#IfWinActive ahk_class Notepad++
~LButton::
    MouseGetPos sX
    While GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
    {
        MouseGetPos eX 
        If abs(odds := eX-sX) &gt; fault
        {
            Send % odds &lt; 0 ? &quot;^!+{vk50}{vk42}&quot; : &quot;^!+{vk50}{vk41}&quot;
            Break
        }
    }
    KeyWait, LButton 
    Send % odds &lt; -fault ? &quot;{vk41}&quot; : odds &gt; fault ? &quot;{vk42}&quot; : &quot;^!+{vk50}&quot;
    Return
#IfWinActive
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 21 Oct 2015 12:47:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=98064#p98064</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=97942#p97942</link>
			<description><![CDATA[<p>Появилась возможность упростить желаемый сценарий, а именно исключить срабатывание лишь в определенных координатах заданного окна, а также исключить момент возвращения курсора в положение нажатия на ЛКМ, если того не потребует сценарий. <br />Желаемый результат:</p><div class="codebox"><pre><code>
; если не отпуская ЛКМ, курсор будет направлен вправо от места нажатия:
LButton:: Send {^!+p}{a}
LButton Up:: Send {b}

; если.. влево:
LButton:: Send {^!+p}{b}
LButton Up:: Send {a}

; если курсор остается на месте (c погрешностью в 2-3 пикселя либо без погрешнсоти):
LButton Up:: Send {^!+p}
</code></pre></div><p>Понимаю, что можно было модифицировать уже предложенные сценарии, но у меня не получилось сделать это верным образом.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Wed, 07 Oct 2015 21:06:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=97942#p97942</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=97912#p97912</link>
			<description><![CDATA[<p><strong>yalanne</strong>, большое спасибо за комментарии к коду! Хотел с помощью них понять, как мне объединить упрощенный действующий скрипт с Вашим, но пока еще не пытался. Последний вариант работает также только в текстовом редакторе. Почему, не знаю, но предположения прежние. Попробовал бы заменить отправление клавиш на виртуальные коды, как советует <strong>Alectric</strong>, но по-прежнему, не знаю, как заменить указанные единичные символы на сочетания клавиш. В данной строке все понятно:<br /></p><div class="codebox"><pre><code>arr := [&quot;A&quot;,&quot;B&quot;] 
</code></pre></div><p>а вот дальше - нет.<br />Также хотел попробовать убрать условие работы скрипта в определенном окне, чтобы понять, требуются ли виртуальные коды, но, опять же, не получилось. Хотелось бы услышать подсказки по этим пунктам.</p><div class="quotebox"><blockquote><p>Если идет в право то надо BC так же писать как и с лево(AB)?</p></blockquote></div><p>Нет, вправо также требуется получить отправление первых двух клавиш, только если при перемещении влево, клавишу <strong>В</strong> мы получаем после возвращения курсора в начальное положение, то при перемещении вправо, клавишу <strong>B </strong>необходимо отправить в момент отпускания ЛКМ, а после возвращения курсора в начальное положение, отправить клавишу <strong>A</strong>. <br />Клавишу <strong>С</strong> же необходимо получить при отсутствии движения курсора при зажатой ЛКМ, а также вместе с клавишами <strong>A</strong> и <strong>B</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Mon, 05 Oct 2015 15:44:02 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=97912#p97912</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=97882#p97882</link>
			<description><![CDATA[<p>Думаю нужно отправлять виртуальные коды.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sun, 04 Oct 2015 05:27:22 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=97882#p97882</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Событие при клике в заданных координатах окна]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=97875#p97875</link>
			<description><![CDATA[<div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp; коменты к последнему посту.</div><div class="fancy_spoiler"><div class="codebox"><pre><code>CoordMode, Mouse, Window ; координаты будут относительно окна.
arr := [&quot;A&quot;,&quot;B&quot;] ; создаем массив с клавишами. У каждой клавиши есть свой порядковый номер,у A-1;B-2 и тд.(если есть).
ifposM(Title,x1,y1,x2,y2) ; функция-условия для #if. В первое поле Title окна; позиция x и y первой точки; позиция x2 и y2 второй точки.
{
    ; все переменные в нутри функции временные.
    MouseGetPos x,y,id ; получаем позицию курсора и его id.
    return (WinActive(Title) = id) and ((x &gt;= x1 and x &lt;= x2) and (y &gt;= y1 and y &lt;= y2))
    ;(WinActive(Title) = id) - проверяет активно ли окно и клик по нему.
    ; ((x &gt;= x1 and x &lt;= x2) - Если x больше либо равно первой точке и при этом меньше либо равно второй ,то по икску клик был в нужном диапозоне.
    ; с y то же самая проверка.
}

#if ifposM(&quot;ahk_exe notepad++.exe&quot;,180,0,1950,40)
LButton::
; Если скрипт перешел сюда значит нужное окно активно и клик был в нужном диапозоне.
MouseGetPos xA,Y ; Получаем первую позицию x + y.
KeyWait %A_ThisHotkey% ; ждем отжатия кнопки которая создала поток(LButton)
MouseGetPos xB ; получаем вторую позицию x.
Send % arr[    z := (Abs(xB-xA)&gt;4)*(1+(xB &gt; xA))    ]
    ; z := - просто запись в переменную полученного результата, что бы не повторять действия вычисления повторно.
    ; Abs(xB-xA)&gt;4) - Получение абсолютного числа(число будет хоть как положительное) между разностью xB и xA. Если это число больше 4 значит ответом этой группы будет 1 иначе 0.
    ; (1+(xB &gt; xA)) - Если курсор ушел в лево то будет, а если в право срабатывает условие и + 1=2. 
    ; дальше идет умножение первой и второй группы. в первой может быть только 1 или 0; во второй только 1 или 2.
    ; в итоге может получится 3 ответа 0 - так как в масиве нету не чего под 0 то и ответа не будет. 1-Буква A. 2-Буква Б,
MouseMove xA,Y, ; перемещаем обратно курсор.
if z = 1 ; если мышь двигалась в лево то еще
    Send % arr[ 2 ] ; нажимаем букву Б.
return
#if</code></pre></div></div></div><div class="quotebox"><cite>becauseim пишет:</cite><blockquote><p>В текстовом редакторе печатаются буквы &quot;А&quot; и &quot;B&quot;, причем при перемещении курсора с зажатой ЛКМ в левую сторону, отправляются обе клавиши в необходимом порядке, а при перемещении вправо - только клавиша &quot;B&quot;. Момент с отправлением клавиши &quot;С&quot;, полагаю, здесь упущен. А вот в окне целевой программы вижу только то, как курсор запоминает момент положения при нажатии, и возвращается в это положение после отпускания, а вот клавиши не отправляются.</p></blockquote></div><p>Если идет в право то надо BC так же писать как и с лево(AB)?<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>CoordMode, Mouse, Window
arr := [&quot;A&quot;,&quot;B&quot;,&quot;C&quot;]
ifposM(Title,x1,y1,x2,y2)
{
    MouseGetPos x,y,id
    return (WinActive(Title) = id) and ((x &gt;= x1 and x &lt;= x2) and (y &gt;= y1 and y &lt;= y2))
}

#if ifposM(&quot;ahk_exe notepad++.exe&quot;,180,0,1950,40)
LButton::
MouseGetPos xA,Y
KeyWait %A_ThisHotkey%
MouseGetPos xB
Send % arr[    z := (Abs(xB-xA)&gt;4)*(1+(xB &gt; xA))    ]
MouseMove xA,Y,
if z = 1
    SendInput % arr[ 2 ]
if z = 2
    SendInput % arr[ 3 ]
return
#if</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Sat, 03 Oct 2015 08:50:31 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=97875#p97875</guid>
		</item>
	</channel>
</rss>
