<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7878&amp;type=atom" />
	<updated>2012-12-18T20:06:12Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7878</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67136#p67136" />
			<content type="html"><![CDATA[<p>Вы меня натолкнули на мысль, что можно блокировать кнопки Esc, !f4 и клики в определенной области и закрывать это окно с помощью autohotkey.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-18T20:06:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67136#p67136</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67134#p67134" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Что вы этой фразой имели в виду?</p></blockquote></div><p>Мне нечего добавить к этой фразе.<br /></p><div class="quotebox"><blockquote><p>А без объектов такое воплотить можно?</p></blockquote></div><p>Можно, воплощайте.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-18T19:56:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67134#p67134</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67133#p67133" />
			<content type="html"><![CDATA[<p>Понял, что для того чтобы эту всю конструкцию понять нужно внимательно читать про объекты.<br />А без объектов такое воплотить можно?<br /></p><div class="quotebox"><blockquote><p>Что мешает ждать клавиши с помощью Input, а клики в нужных (или ненужных) координатах отлавливать иным способом?</p></blockquote></div><p>И еще вопрос.<br /></p><div class="quotebox"><blockquote><p>; подразумевается, что для выбора пресета будет произведён хотя бы один клик.<br />; иначе нужно обрабатывать все пути закрытия окна.</p></blockquote></div><p>Что вы этой фразой имели в виду?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-18T18:40:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67133#p67133</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67132#p67132" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>это как такую конструкцию понять?</p></blockquote></div><p><em>KeyList := {}</em><br />Это создание объекта с именем KeyList.<br /><em>KeyList := {winTitle: …, Hotkeys: …}</em><br />Объект KeyList содержит два поля: winTitle и Hotkeys.<br /><em>winTitle: winTitle</em><br />В поле с именем winTitle записано содержимое переменной winTitle<br /><em>Hotkeys: [&quot;~Esc&quot;, &quot;~!f4&quot;, &quot;~LButton&quot;]</em><br />В поле с именем Hotkeys записан массив содержащий три значения:<br />под номером 1 — строку ~Esc<br />под номером 2 — строку ~!f4 и т.д.<br /></p><div class="quotebox"><blockquote><p>почему кавычки</p></blockquote></div><p>Второй аргумент — строка.<br /></p><div class="quotebox"><blockquote><p>вот это все непонятно.</p></blockquote></div><p>Это всё равнозначно:<br /></p><div class="codebox"><pre><code>Hotkey, IfWinActive, New Sequence
Hotkey, ~Esc, WindowClose , On
Hotkey, ~!f4, WindowClose, On
Hotkey, ~LButton, WindowClose, On</code></pre></div><p>При SetHotkeys(KeyList, &quot;WindowClose&quot;)<br /></p><div class="codebox"><pre><code>Hotkey, IfWinActive, New Sequence
Hotkey, ~Esc, Off
Hotkey, ~!f4, Off
Hotkey, ~LButton, Off</code></pre></div><p>При SetHotkeys(KeyList, &quot;&quot;)<br /></p><div class="quotebox"><blockquote><p>Ну и замудренный скрипт у вас получился</p></blockquote></div><p>Правильно, давайте и впредь выходить из цикла с помошью goto.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-18T17:32:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67132#p67132</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67129#p67129" />
			<content type="html"><![CDATA[<p>Если честно, то непонятно почти все.<br /></p><div class="codebox"><pre><code>KeyList := {winTitle: winTitle, Hotkeys: [&quot;~Esc&quot;, &quot;~!f4&quot;, &quot;~LButton&quot;]}</code></pre></div><p> - это как такую конструкцию понять?<br /></p><div class="codebox"><pre><code>SetHotkeys(KeyList, &quot;WindowClose&quot;)</code></pre></div><p> - почему кавычки, что значит эта буквальная строка?&nbsp; &nbsp;Типа GoSub?</p><div class="codebox"><pre><code>SetHotkeys(KeyList, label) {
    if KeyList.winTitle
        Hotkey, IfWinActive, % KeyList.winTitle

    for index, key in KeyList.Hotkeys
        Hotkey, %key%, % label? label : &quot;Off&quot;, % label? &quot;On&quot; : &quot;&quot;
}</code></pre></div><p> вот это все непонятно.</p><p>Спасибо. Ну и замудренный скрипт у вас получился.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-18T16:11:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67129#p67129</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67101#p67101" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
; подразумевается, что для выбора пресета будет произведён хотя бы один клик.
; иначе нужно обрабатывать все пути закрытия окна.

winTitle := &quot;New Sequence&quot;
classNN := &quot;Edit4&quot;
KeyList := {winTitle: winTitle, Hotkeys: [&quot;~Esc&quot;, &quot;~!f4&quot;, &quot;~LButton&quot;]}
CloseButton := {x0: 123, x1: 234, y0: 345, y1: 567} ; координаты кнопки закрытия окна
CancelButton := {x0: 123, x1: 234, y0: 345, y1: 567} ; координаты кнопки отмены

loop
{
    WinWaitActive, %winTitle%
    SetHotkeys(KeyList, &quot;WindowClose&quot;)
    WinWaitClose, %winTitle%
    SetHotkeys(KeyList, &quot;&quot;)
}
until !windowClosed

MsgBox %winTitle%`nтекст :`n`n%text%
return

WindowClose:
    ControlGetText, text, %classNN% , %winTitle%
    windowClosed := (A_ThisHotkey ~= &quot;LButton&quot;)? ClickInRect(CloseButton) || ClickInRect(CancelButton) : true
    return

SetHotkeys(KeyList, label) {
    if KeyList.winTitle
        Hotkey, IfWinActive, % KeyList.winTitle

    for index, key in KeyList.Hotkeys
        Hotkey, %key%, % label? label : &quot;Off&quot;, % label? &quot;On&quot; : &quot;&quot;
}

ClickInRect(Rect) {
    CoordMode, Mouse, Relative
    MouseGetPos, x, y
    return x &gt; Rect.x0 &amp;&amp; x &lt; Rect.x1 &amp;&amp; y &gt; Rect.y0 &amp;&amp; y &lt; Rect.y1
}</code></pre></div><p>Непонятно — спрашивайте, прокомментирую.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-18T05:00:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67101#p67101</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67088#p67088" />
			<content type="html"><![CDATA[<p>Irbis, с флагом тоже пробовал - результат такой же.<br />Мне кажется, что A_PriorKey что срабатывание хоткиев проходят по одному алгоритму.<br /></p><div class="quotebox"><blockquote><p>Что мешает ждать клавиши с помощью Input, а клики в нужных (или ненужных) координатах отлавливать иным способом?</p></blockquote></div><p>Ну вот с Input я так до конца и не разобрался, потому как цикл останавливается на этом инпуте и ждет нажатия кнопки.<br />А как ловить паралельно нажатия мыши?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-17T16:24:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67088#p67088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67087#p67087" />
			<content type="html"><![CDATA[<p>Что мешает ждать клавиши с помощью Input, а клики в нужных (или ненужных) координатах отлавливать иным способом?</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-17T16:06:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67087#p67087</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67086#p67086" />
			<content type="html"><![CDATA[<p>Так команда Input же ждет пока не произойдет нажатие определенной клавиши.<br />А мне надо, чтобы цикл заканчивался не только по нажатию enter, но и по нажатию кнопки мышки.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-17T16:00:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67086#p67086</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67085#p67085" />
			<content type="html"><![CDATA[<p>Попробуй вместо использования A_PriorKey менять флаг (Achtung <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> ), повесив на Esc хоткей:<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>#SingleInstance force
#InstallKeybdHook
#InstallMouseHook
Start:
loop
{
   IfWinActive, New Sequence
   {          
      Achtung := 0
      loop
      {
         GetKeyState, state, LButton
         if state = D
            MouseGetPos, xpos, ypos
         NameOld := Name
         ControlGetText, Name, Edit4, New Sequence
         IfWinNotExist, New Sequence
            break
      }
      if Achtung || (A_PriorKey = &quot;LButton&quot;) &amp;&amp; (xpos &gt; 590) || (A_PriorKey = &quot;LButton&quot;) &amp;&amp; (ypos &lt; 60)
         Continue
      SplashImage,,  w120 B1  ,, Please Wait...
      If Name =
         Name := NameOld
      StringReplace, Name, Name, `r`n, `n, All
      Send, ^{vk5A}^{vk49} ; Crtl+z Ctrl+i 
.......


~Escape::
~!F4::
Achtung := 1
Return </code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2012-12-17T15:53:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67085#p67085</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67084#p67084" />
			<content type="html"><![CDATA[<p>Input попробовали, но использовать решили A_priorKey, A_priorKey надежды не оправдал, но …<br />Что-то я не пойму ход ваших мыслей <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-17T15:47:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67084#p67084</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67082#p67082" />
			<content type="html"><![CDATA[<p>Да, с Input я тоже вначале пробовал.<br />Но&nbsp; проблема в том, что «не отменять» его можно не только нажатием Enter,<br />но еще и нажатием мыши на ОК либо нажатием 2 раза мышью на любой из пресетов.</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-17T15:29:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67082#p67082</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67080#p67080" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>которое можно закрыть (отменить) с помощью esc, Alt+f4, или нажав на кнопку cancel или нажав на крестик.</p></blockquote></div><p>Сответственно «не отменять» его можно лишь нажатием Enter?</p><p>Правильнее отслеживать событие которое явно указывает на необходимость продолжать, ведь окно можно «убрать» иными способами, учёт которых не имеет смысла.</p><p>Пример:<br /></p><div class="codebox"><pre><code>winTitle := &quot;ahk_class Notepad&quot;
classNN := &quot;Edit1&quot;

loop {
    WinWaitActive, %winTitle%
    ControlGetText, Name, %classNN% , %winTitle%
    Input, singleKey, v l1, {Enter}
}
until ErrorLevel = &quot;EndKey:Enter&quot;

MsgBox мы дождались нажатия Enter в окне %winTitle%`nтекст в окне перед нажатием Enter:`n`n%Name%</code></pre></div>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-17T15:09:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67080#p67080</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67068#p67068" />
			<content type="html"><![CDATA[<p>А лучший вариант можно озвучить?<br />А то я знаю только еще один.<br /><a href="http://www.autohotkey.com/docs/FAQ.htm#repeat">http://www.autohotkey.com/docs/FAQ.htm#repeat</a></p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-12-17T13:47:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67068#p67068</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: A_PriorKey не всегда запоминает нажатые кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67066#p67066" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>А в какую сторону пересматривать-то?</p></blockquote></div><p>В строну отказа от A_PriorKey.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-12-17T13:41:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67066#p67066</id>
		</entry>
</feed>
