<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Получать сообщение о активации контрола GUI]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8100&amp;type=atom" />
	<updated>2013-03-06T23:54:22Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8100</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=70035#p70035" />
			<content type="html"><![CDATA[<p>Значения хендлов тоже нужно сохранить.</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2013-03-06T23:54:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=70035#p70035</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=70034#p70034" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Александр_&nbsp; пишет:</cite><blockquote><p>Никак, придётся имена тоже передавать в библиотеку.</p></blockquote></div><p>Поэтому принципу думаю получится:<br /></p><div class="codebox"><pre><code>
Gui, Add, Edit, hwndПервый
Gui, Add, Edit, hwndВторой 
Gui, Add, Edit, hwndТретий
HF_GetControl( &quot;Первый|Второй|Третий&quot;)
return
HF_GetControl(Control)
{
    Loop, Parse, Control, | 
        HF_Control%A_Index% := %A_LoopField% , NHF_Control%A_Index% := A_LoopField , HF_MaxIndex := A_Index , MsgBox .= NHF_Control%A_Index% . &quot;  =  &quot; . HF_Control%A_Index% . &quot;`r&quot; 
    MsgBox % MsgBox . &quot;`rМассив создан из &quot; . HF_MaxIndex . &quot; контролов&quot;
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-03-06T22:56:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=70034#p70034</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=70030#p70030" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Плохо сформулировал суть.<br />Если функция WM_COMMAND будет лежать например в библиотеке, а ей при старте скрипта будут &quot;скармливатся&quot; списком неизвестные нам ни по количеству, ни по названию переменные содержащие hwnd за которыми она будет следить. Сравнение идёт между числами, и когда будет совпадение с какой-то из переменных, как узнать именно её имя?</p></blockquote></div><p>Никак, придётся имена тоже передавать в библиотеку.</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2013-03-06T22:00:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=70030#p70030</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=70028#p70028" />
			<content type="html"><![CDATA[<p>Плохо сформулировал суть.<br />Если функция WM_COMMAND будет лежать например в библиотеке, а ей при старте скрипта будут &quot;скармливатся&quot; списком неизвестные нам ни по количеству, ни по названию переменные содержащие hwnd за которыми она будет следить. Сравнение идёт между числами, и когда будет совпадение с какой-то из переменных, как узнать именно её имя?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-03-06T21:57:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=70028#p70028</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=70026#p70026" />
			<content type="html"><![CDATA[<p>Странный вопрос. Эта строчка что делает <strong>if !(lp = hEdit1 || lp = hEdit2)</strong>?</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2013-03-06T21:46:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=70026#p70026</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=70024#p70024" />
			<content type="html"><![CDATA[<p>Скажите, а есть какой-то простой способ (без использования асс. массивов), определять именно имя переменной hwnd контрола:<br /></p><div class="codebox"><pre><code>Gui, Add, Edit, h23 w100 hwndhEdit1
Gui, Add, Edit, h23 w100 hwndhEdit2 
Gui, Show, w140
OnMessage(0x111, &quot;WM_COMMAND&quot;)
return

WM_COMMAND(wp, lp)
{
    Global hEdit1, hEdit2
    Static EN_SETFOCUS := 0x100, EN_KILLFOCUS := 0x200

    if !(lp = hEdit1 || lp = hEdit2)
        return
    
    if (wp &gt;&gt; 16 = EN_SETFOCUS)
        ToolTip % Имя переменной hwnd контрола
    .........

}

GuiClose:
    ExitApp
</code></pre></div><p>тут при каждой активации контролов хочется видеть в сообщении &quot;hEdit1&quot; или &quot;hEdit2&quot;.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-03-06T21:35:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=70024#p70024</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69784#p69784" />
			<content type="html"><![CDATA[<p>Спасибо. Буду &quot;курить&quot;.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-02-26T20:15:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69784#p69784</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69783#p69783" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Вторым параметром она возвращает hwnd контрола, а первым непонятно.</p></blockquote></div><p>В первом параметре возвращаются два значения. В старшем слове (вторые от начала 2 байта) — код оповещения (их может быть много, но мы отслеживаем только EN_SETFOCUS и EN_KILLFOCUS), в младшем слове (первые от начала 2 байта) — идентификатор контрола (не путать с hwnd). Нас интересует старшее слово. Чтобы получить эту часть параметра, осуществляем <a href="http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8#.D0.9B.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_.D1.81.D0.B4.D0.B2.D0.B8.D0.B3">поразрядный сдвиг</a> вправо, затем сравниваем полученный результат со значениями EN_SETFOCUS и EN_KILLFOCUS (чему они равны, можно узнать из Гугла, если найти таблицы констант Windows или какой-нибудь код, где их значения указаны).<br /></p><div class="quotebox"><blockquote><p>И как это всё искать <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms647591(v=vs.85).aspx">на msdn</a> я так и непонял, где указано что должна возвращать WM_COMMAND в параметрах wp и lp.</p></blockquote></div><p>В разделе Remarks.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2013-02-26T20:07:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69783#p69783</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69763#p69763" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> спасибо вам большое в который раз!</p><p>Если вам не сложно, просвятите меня по счёт OnMessage. 0x111 в строке с OnMessage<br />это WM_COMMAND <a href="http://l.autohotkey.net/docs/misc/SendMessageList.htm">из этого списка</a> тут же в строке WM_COMMAND - имя функции (может быть любое) которая будет получать сообщения от WM_COMMAND. Вторым параметром она возвращает hwnd контрола, а первым непонятно. EN_SETFOCUS := 0x100, EN_KILLFOCUS := 0x200 заданы как псевдонимы, то есть их значения можно использовать напрямую в выражениях функции. Непонятно, откуда взялись 0x100 и 0x200. (wp &gt;&gt; 16 = EN_SETFOCUS) что значит это выражение.&nbsp; И как это всё искать <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms647591(v=vs.85).aspx">на msdn</a> я так и непонял, где указано что должна возвращать WM_COMMAND в параметрах wp и lp.</p><p>И зачем тогда <a href="http://l.autohotkey.net/docs/misc/SendMessageList.htm">в этом списке</a><br />WM_SETFOCUS = 0x07<br />WM_KILLFOCUS = 0x08</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-02-25T17:05:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69763#p69763</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69752#p69752" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>global EN_SETFOCUS := 0x100, EN_KILLFOCUS := 0x200, hEdit1

Gui, Add, Edit, x10 w100 h23 hwndhEdit1
Gui, Add, Button, x50 w60, OK
Gui, Show, w120

OnMessage(0x111, &quot;WM_COMMAND&quot;)
return

GuiClose:
    ExitApp

WM_COMMAND(wp, lp)
{
    if !(lp = hEdit1)
        return
    
    if (wp &gt;&gt; 16 = EN_SETFOCUS)
        ToolTip Контрол Edit1 получил фокус   ; здесь вместо ToolTip необходимые действия
                                              ; если действия занимают много времени, то лучше по таймеру
    if (wp &gt;&gt; 16 = EN_KILLFOCUS)
        ToolTip Контрол Edit1 потерял фокус   ; здесь вместо ToolTip необходимые действия
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2013-02-24T16:56:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69752#p69752</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69739#p69739" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Я только попозже смогу написать</p></blockquote></div><p>Спасибо. Жду с нетерпением.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-02-24T10:46:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69739#p69739</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69738#p69738" />
			<content type="html"><![CDATA[<p>Там winaрi не нужно. Используется родная <a href="http://l.autohotkey.net/docs/commands/OnMessage.htm"><em>OnMessage</em></a>. Я только попозже смогу написать.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2013-02-24T10:45:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69738#p69738</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69735#p69735" />
			<content type="html"><![CDATA[<p>Спасибо&nbsp; за ответ. Но ничего как всегда мне с winaрi&nbsp; не понятно.<br />Можно на примере, пожалуйста .</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-02-24T10:22:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69735#p69735</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69734#p69734" />
			<content type="html"><![CDATA[<p>Отслеживать с помощью <em>OnMessage</em> уведомление <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb761685%28v=vs.85%29.aspx"><strong>EN_SETFOCUS</strong></a>.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2013-02-24T09:59:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69734#p69734</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Получать сообщение о активации контрола GUI]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=69731#p69731" />
			<content type="html"><![CDATA[<p>Господа, каким образом можно поставить хук на событие активации \ деактивации элемента управления (например Edit) своего GUI? </p><div class="codebox"><pre><code>Gui, Add, Edit, vEdit1 x10 w300 Center ReadOnly
Gui, Add, Edit, vEdit2 x10 w300 Center ReadOnly
Gui, Show
Return
            *******
MsgBox Контрол Edit1 деактивирован
            *******
MsgBox Активирован контрол Edit1
            *******</code></pre></div><p>В данном случае поставил курсор ввода в Edit1, получил одно сообщение. <br />Убрал курсор ввода, ещё одно сообщение.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2013-02-24T09:04:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=69731#p69731</id>
		</entry>
</feed>
