<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6351&amp;type=atom" />
	<updated>2011-10-27T08:49:43Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6351</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52945#p52945" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Idopwn пишет:</cite><blockquote><p>Как быть с посылами по типу ctrl+q, shift+e и т.д.?</p></blockquote></div><div class="codebox"><pre><code>#UseHook
*vk31::
*vk32::
*vk33::
*vk34::
*vk35::
*vk36::
*vk37::
*vk38::
*vk39::
*vk30::
*vk51:: ; q
*vk57:: ; w
*vk45:: ; e
*vk52:: ; r
*vk54:: ; t
; и т.д.
   If !MKeyPressed
      UseShifts:=UseControls:=UseAlts:=0
   Counter:=0
   SetTimer, SendKey, 1
   KeyWait, % A_ThisHotkey
   Return
SendKey:
   Counter++
   If Counter=50
   {
      SetTimer, SendKey, Off
      Counter:=0
      If UseShifts
      Or UseControls
      Or UseAlts
         Goto, SendLastMKey
   }
   IfEqual, UseShifts, 1
    , Send, % &quot;+{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Else IfEqual, UseControls, 1
    , Send, % &quot;^{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Else IfEqual, UseAlts, 1
    , Send, % &quot;!{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Else
      Send, % &quot;{&quot; SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Return
SendLastMKey:
   IfEqual, UseShifts, 1
    , Send, % &quot;+{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Else IfEqual, UseControls, 1
    , Send, % &quot;^{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Else IfEqual, UseAlts, 1
    , Send, % &quot;!{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   UseShifts:=UseControls:=UseAlts:=0
   Return

vkA0:: ; shifts
vkA1::
   MKeyPressed:=UseShifts:=1
   Send, % &quot;{&quot;A_ThisHotkey &quot; Down}&quot;
   KeyWait, % A_ThisHotkey
   Send, % &quot;{&quot;A_ThisHotkey &quot; Up}&quot;
   MKeyPressed:=0
   Return

vkA2:: ; ctrls
vkA3::
   MKeyPressed:=UseControls:=1
   Send, % &quot;{&quot;A_ThisHotkey &quot; Down}&quot;
   KeyWait, % A_ThisHotkey
   Send, % &quot;{&quot;A_ThisHotkey &quot; Up}&quot;
   MKeyPressed:=0
   Return

vkA4:: ; alts
vkA5::
   MKeyPressed:=UseAlts:=1
   Send, % &quot;{&quot;A_ThisHotkey &quot; Down}&quot;
   KeyWait, % A_ThisHotkey
   Send, % &quot;{&quot;A_ThisHotkey &quot; Up}&quot;
   MKeyPressed:=0
   Return</code></pre></div><div class="quotebox"><cite>Idopwn пишет:</cite><blockquote><p>Наиболее оптимален - первый вариант скрипта?</p></blockquote></div><p>Любой с таймером.</p>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2011-10-27T08:49:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52945#p52945</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52938#p52938" />
			<content type="html"><![CDATA[<p>Благодарю за столь огромную проделанную работу О_о<br />Как быть с посылами по типу ctrl+q, shift+e и т.д.? Попытаюсь воспользоваться скриптом вылова кодов клавиатуры.<br />Наиболее оптимален - первый вариант скрипта?</p>]]></content>
			<author>
				<name><![CDATA[Idopwn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27309</uri>
			</author>
			<updated>2011-10-26T20:44:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52938#p52938</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52865#p52865" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>$vk31::
$vk32::
$vk33::
$vk34::
$vk35::
$vk36::
$vk37::
$vk38::
$vk39::
$vk30::
   Counter:=
   SetTimer, SendKey, 1
   KeyWait, % A_ThisHotkey
   Return

SendKey:
   Counter++
   If Counter=50
   {
      SetTimer, SendKey, Off
      Counter:=
   }
   Send, % &quot;{&quot;SubStr(A_ThisHotkey, 2)&quot;}&quot;
   Return</code></pre></div><p>Можно ещё так, разницы нет:</p><div class="codebox"><pre><code>#UseHook
vk31::
vk32::
vk33::
vk34::
vk35::
vk36::
vk37::
vk38::
vk39::
vk30::
   Counter:=
   SetTimer, SendKey, 1
   KeyWait, % A_ThisHotkey
   Return

SendKey:
   Counter++
   If Counter=50
   {
      SetTimer, SendKey, Off
      Counter:=
   }
   Send, % &quot;{&quot;A_ThisHotkey &quot;}&quot;
   Return</code></pre></div><p>, еще пара вариантов:</p><div class="codebox"><pre><code>#UseHook
vk31::
vk32::
vk33::
vk34::
vk35::
vk36::
vk37::
vk38::
vk39::
vk30::
   Counter:=
   Start ? Stop:=1:Stop:=0
   Start:=1
   While Counter&lt;50
   {
      If Stop
         Break
      Counter++
      Send, % &quot;{&quot;A_ThisHotkey &quot;}&quot;
      Sleep, -1
   }
   Stop:=Start:=0, Counter:=
   KeyWait, % A_ThisHotkey
   Return</code></pre></div><div class="codebox"><pre><code>#UseHook
vk31::
vk32::
vk33::
vk34::
vk35::
vk36::
vk37::
vk38::
vk39::
vk30::
   Counter:=
   Stop:=Start ? 1:0
   Start:=1
   Loop
   {
      If Stop
      Or Counter=50
         Break
      Counter++
      Send, % &quot;{&quot;A_ThisHotkey &quot;}&quot;
      Sleep, -1
   }
   Stop:=Start:=0, Counter:=
   KeyWait, % A_ThisHotkey
   Return</code></pre></div><p>Хотя таймер явно проигрывает циклу в скорости:</p><div class="codebox"><pre><code>SetFormat, Float, 0.3
$vk31::
   Start:=A_TickCount
   Counter:=
   SetTimer, SendKey, 1
   KeyWait, vk31
   Return
SendKey:
   Counter++
   If Counter=50
   {
      TrayTip,, % (A_TickCount-Start)/1000 &quot; sec.&quot;
      SetTimer, SendKey, Off
      Start:=Counter:=
   }
   Send, {vk31}
   Return

$vk32::
   StartCount:=A_TickCount
   Counter:=
   Stop:=Start ? 1:0
   Start:=1
   Loop
   {
      If Stop
      Or Counter=50
         Break
      Counter++
      Send, {vk32}
      Sleep, -1
   }
   TrayTip,, % (A_TickCount-StartCount)/1000 &quot; sec.&quot;
   Stop:=Start:=0, StartCount:=Counter:=
   KeyWait, vk32
   Return</code></pre></div><p>, всё же он более стабильнее.</p>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2011-10-24T17:45:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52865#p52865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52852#p52852" />
			<content type="html"><![CDATA[<p>Всё работает идеально, в точности как надо! Но как быть, если требуются скрипты для более 20-и посылов? Как можно разрешить такую задачку, не размножая первые три строки (stopsendxtimer и sendztimer)?</p>]]></content>
			<author>
				<name><![CDATA[Idopwn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27309</uri>
			</author>
			<updated>2011-10-24T09:11:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52852#p52852</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52846#p52846" />
			<content type="html"><![CDATA[<p>По сути это пример из трёх клавиш, нажатие на любую из них запускает собственный таймер и прекращает работу другого таймера запущенного ранее (если такая ситуация имеет место), разкомментируйте строки вида: Send, {vk..., и удалите строки с TrayTip (эти строки для нагдядности действий).</p>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2011-10-24T00:27:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52846#p52846</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52844#p52844" />
			<content type="html"><![CDATA[<p>Извинюясь, но совсем не понял сути написанного вами скрипта, хоть и увидел трейтип с каунтером, это мне ничуть не помогло, возможно ли по этому же типу вместо накрутки цифр каунтера сделать спам кнопок? В смысле переключение в таком же стиле, уже вторую неделю бьюсь над скриптом, ничего не помогает, даже GetKeyState удерживанием не подходит, в силу своих лагов...</p>]]></content>
			<author>
				<name><![CDATA[Idopwn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27309</uri>
			</author>
			<updated>2011-10-23T21:15:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52844#p52844</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52810#p52810" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Idopwn пишет:</cite><blockquote><p>...любая кнопка сначала снимала текущий луп, а затем начинала свой...</p></blockquote></div><p>Не обязательно использовать команду Loop, чтобы послать 50 нажатий:</p><div class="codebox"><pre><code>$vk31::
   SetTimer, StopSendKey2, -0
   SetTimer, StopSendKey3, -0
   SetTimer, SendKey1, 1
   KeyWait, vk31
   Return
SendKey1:
   Counter1++
   If Counter1=50
      SetTimer, StopSendKey1, -0
;   Send, {vk31}
   TrayTip,, % &quot;send key 1: &quot;Counter1
   Return
StopSendKey1:
   SetTimer, SendKey1, Off
   Counter1:=
   Return

$vk32::
   SetTimer, StopSendKey1, -0
   SetTimer, StopSendKey3, -0
   SetTimer, SendKey2, 1
   KeyWait, vk32
   Return
SendKey2:
   Counter2++
   If Counter2=50
      SetTimer, StopSendKey2, -0
;   Send, {vk32}
   TrayTip,, % &quot;send key 2: &quot;Counter2
   Return
StopSendKey2:
   SetTimer, SendKey2, Off
   Counter2:=
   Return

$vk33::
   SetTimer, StopSendKey1, -0
   SetTimer, StopSendKey2, -0
   SetTimer, SendKey3, 1
   KeyWait, vk33
   Return
SendKey3:
   Counter3++
   If Counter3=50
      SetTimer, StopSendKey3, -0
;   Send, {vk33}
   TrayTip,, % &quot;send key 3: &quot;Counter3
   Return
StopSendKey3:
   SetTimer, SendKey3, Off
   Counter3:=
   Return</code></pre></div><div class="quotebox"><cite>Idopwn пишет:</cite><blockquote><p>...перестали распозноваться хоткеи по типу +{q}::...</p></blockquote></div><p>Используйте виртуальный/клавиатурный коды.<br /></p><div class="quotebox"><cite>Idopwn пишет:</cite><blockquote><p>Чему равен Sleep 0(1?)...</p></blockquote></div><p>Есть описание в документации по этой команде.</p>]]></content>
			<author>
				<name><![CDATA[Grey]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25792</uri>
			</author>
			<updated>2011-10-23T02:47:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52810#p52810</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52809#p52809" />
			<content type="html"><![CDATA[<p>Не подходит, в силу того, что временами нужно резко переходить от спама одной кнопки к другой, причем каждая доля секунды на счету. Возможно ли это решить приоритетами?</p><p>1. Реально ли сделать вверху %кнопки_хоткеев%::Break, дабы любая кнопка сначала снимала текущий луп, а затем начинала свой? (просто идеальное решение для моей проблемы является именно отменой-началом лупов).<br />2. Почему-то перестали распозноваться хоткеи по типу +{q}::, ранее именно так распознавались (дело было давно, быть может, забыл что-то).<br />3. Чему равен Sleep 0(1?) в реальных мс (для правильного расчета лупов)?<br />4. Верно ли, что данный скрипт спамит максимально часто кнопку при удержании? (как альтернативный вариант, первый всё же намного лучше)<br /></p><div class="codebox"><pre><code>$2::
   Loop  
   {
    if not GetKeyState(&quot;2&quot;, &quot;P&quot;)
      break
     Send 2 
     sleep 1
    }
return</code></pre></div><p>Прошу прощения за стену текста, тега спойлера не нашел.</p><p>З.Ы.: Благодарю teadrinker за посыл на форум. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Idopwn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27309</uri>
			</author>
			<updated>2011-10-22T21:59:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52809#p52809</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52808#p52808" />
			<content type="html"><![CDATA[<p>А почему Critical не подходит?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-10-22T21:56:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52808#p52808</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Спам кнопок, отмена Loop с переходом на следующий]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52806#p52806" />
			<content type="html"><![CDATA[<p>Собственно, написал я скрипт для всех спама всех кнопок по типу:<br /></p><div class="codebox"><pre><code>2::
Loop 50
{
Send 6
sleep 1
}
return
3::
Loop 50
{
Send 6
Sleep 1
}
return</code></pre></div><p>Проблема в том, что при одновременном нажатии {2}{3} результат выглядит следующим образом: (2x3)(3x50)(2x47). Т.е. предыдущий Loop заканчивается после данного. Решение Critical thread не подходит, прошу помочь.</p>]]></content>
			<author>
				<name><![CDATA[Idopwn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27309</uri>
			</author>
			<updated>2011-10-22T21:51:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52806#p52806</id>
		</entry>
</feed>
