<?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=8161</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8161&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Получать сообщение о активации\деактивации окон в системе».]]></description>
		<lastBuildDate>Thu, 18 Apr 2013 11:24:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71528#p71528</link>
			<description><![CDATA[<p>Судя по комментарию по ссылке, работает.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Thu, 18 Apr 2013 11:24:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71528#p71528</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71527#p71527</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br /></p><div class="quotebox"><blockquote><p>В будущих версиях Windows:</p></blockquote></div><p>А в &quot;восьмёрке&quot; работает?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Apr 2013 11:20:08 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71527#p71527</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71525#p71525</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>с этим могут быть проблемы?</p></blockquote></div><p>В Windows 7 вряд ли, а в XP SP1:<br /><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms644989%28v=vs.85%29.aspx"><strong>RegisterShellHookWindow</strong> function</a><br /></p><div class="quotebox"><cite>MSDN пишет:</cite><blockquote><p>This function was not included in the SDK headers and libraries until Windows XP with Service Pack 1 (SP1) and Windows Server 2003. If you do not have a header file and import library for this function, you can call the function using LoadLibrary and GetProcAddress.</p></blockquote></div><p>В будущих версиях Windows:<br /></p><div class="quotebox"><cite>MSDN пишет:</cite><blockquote><p>This function is not intended for general use. It may be altered or unavailable in subsequent versions of Windows.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Apr 2013 10:52:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71525#p71525</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71524#p71524</link>
			<description><![CDATA[<p>Я про то что: правильно ли я адаптировал код? Я же в WinApi совсем не бум-бум <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />И даже до конца не могу понять, что является &quot;WinApi&quot;, а что нет. Увидел ваш код, и методом ненаучного тыка что-то &quot;накатал&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Apr 2013 10:35:48 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71524#p71524</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71523#p71523</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>с этим могут быть проблемы?</p></blockquote></div><p>Вы серьёзно? Почему вы считаете этот вопрос уместным?</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Thu, 18 Apr 2013 10:30:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71523#p71523</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71522#p71522</link>
			<description><![CDATA[<p>Сделал <a href="http://forum.script-coding.com/viewtopic.php?pid=64273#p64273">на примере кода</a> <strong>creature.ws</strong>. Хотел бы знать, с этим могут быть проблемы?<br /></p><div class="codebox"><pre><code>CoordMode, ToolTip, Screen
DllCall(&quot;RegisterShellHookWindow&quot;, &quot;UInt&quot;, A_ScriptHwnd) 
OnMessage(DllCall(&quot;RegisterWindowMessage&quot;, &quot;str&quot;, &quot;SHELLHOOK&quot;), &quot;ShellProc&quot;) 
OnExit, Exit
Return

ShellProc(nCode, wParam)
{ 
    static A := 1
    If (nCode = 4)
    { 
        WinGet, Process, ProcessName, % !wParam ? &quot;A&quot; : &quot;ahk_id &quot; wParam 
        ToolTip % A++ &quot;`n`n&quot; Process, 15, 15
    }    
} 

Exit:
    DllCall(&quot;DeregisterShellHookWindow&quot;, &quot;UInt&quot;, A_ScriptHwnd)
    ExitApp
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Apr 2013 09:40:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71522#p71522</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71334#p71334</link>
			<description><![CDATA[<p>У меня иногда срабатывает, иногда нет. Причину не знаю.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 13 Apr 2013 21:14:35 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71334#p71334</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=71326#p71326</link>
			<description><![CDATA[<p>Использую ваш код, и выяснилось - что если активировать <em>окно</em>, следом активировать меню пуск потом панель задач, и потом снова окно - то сообщение о изменении активного окна (после панели задач) не поступит.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 12 Apr 2013 16:31:50 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=71326#p71326</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=70559#p70559</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Не понял, вы же его использовали <a href="http://forum.script-coding.com/viewtopic.php?pid=47283#p47283">в этом</a> скрипте.</p></blockquote></div><p>Он работает в AHK без написания dll только для событий клавиатуры и мыши.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 20 Mar 2013 17:57:24 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=70559#p70559</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=70558#p70558</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>OnMessage отслеживает только сообщения, посланные своему приложению.</p></blockquote></div><p>Как раз, сам только понял <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br /></p><div class="quotebox"><blockquote><p>правильно отслеживать с помощью хука SetWindowsHookEx, но в AHK он не сработает.</p></blockquote></div><p>Не понял, вы же его использовали <a href="http://forum.script-coding.com/viewtopic.php?pid=47283#p47283">в этом</a> скрипте.</p><div class="quotebox"><blockquote><p>Примерно так:</p></blockquote></div><p>Спасибо! Так и знал, что именно вы поможете <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 20 Mar 2013 17:50:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=70558#p70558</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=70557#p70557</link>
			<description><![CDATA[<p>OnMessage отслеживает только сообщения, посланные своему приложению.<br />Смену активного окна, наверное, правильно отслеживать с помощью хука <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx"><strong>SetWindowsHookEx</strong></a>, но в AHK он не сработает.<br />Можно выйти из положения, установив <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd373640%28v=vs.85%29.aspx"><strong>SetWinEventHook</strong></a> и отслеживая событие смены клавиатурного фокуса <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd318066%28v=vs.85%29.aspx#EVENT_OBJECT_FOCUS"><strong>EVENT_OBJECT_FOCUS</strong></a>. Но оно будет происходить даже при получении фокуса разными контролами внутри одного окна, поэтому нужно определять окно верхнего уровня, которому принадлежит контрол. Если его хэндл сменился — произошла смена активного окна.<br />Примерно так:<br /></p><div class="codebox"><pre><code>#Persistent
EVENT_OBJECT_FOCUS := 0x8005
global WS_CHILD := 0x40000000, hPrevActive

WinGet, hPrevActive,, A

HWINEVENTHOOK := SetWinEventHook(EVENT_OBJECT_FOCUS, EVENT_OBJECT_FOCUS, 0
                     , RegisterCallback(&quot;WatchingActivateWindow&quot;, &quot;F&quot;), 0, 0, 0)
                     
OnExit, Exit
return

Exit:
   DllCall(&quot;UnhookWinEvent&quot;, Ptr, HWINEVENTHOOK)
   ExitApp
   
WatchingActivateWindow(hWinEventHook, event, hwnd)
{
   h := hwnd
   While !toplevel
   {
      WinGet, Style, Style, ahk_id %h%
      if (Style &amp; WS_CHILD)
         h := DllCall(&quot;GetParent&quot;, Ptr, h, Ptr)
      else
         toplevel := 1
   }
   
   if (h != hPrevActive)
      ToolTip % hPrevActive := h   ; хэндл активного в данный момент окна
}

SetWinEventHook(eventMin, eventMax, hmodWinEventProc, lpfnWinEventProc, idProcess, idThread, dwFlags)
{
   return DllCall(&quot;SetWinEventHook&quot; , UInt, eventMin, UInt, eventMax
                                    , Ptr, hmodWinEventProc, Ptr, lpfnWinEventProc
                                    , UInt, idProcess, UInt, idThread
                                    , UInt, dwFlags, Ptr)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 20 Mar 2013 17:34:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=70557#p70557</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=70556#p70556</link>
			<description><![CDATA[<p>Таймер на 10 мсек... Думаю скрипт с &quot;критическими&quot; функциями будет не оч. стабильно работать.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 20 Mar 2013 17:32:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=70556#p70556</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=70553#p70553</link>
			<description><![CDATA[<p>Можно периодически проверять, которое окно на данный момент является активным.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Wed, 20 Mar 2013 17:21:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=70553#p70553</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Получать сообщение о активации\деактивации окон в системе]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=70541#p70541</link>
			<description><![CDATA[<p>Господа, подскажите как получать сообщения о активации\деактивации любого окна в системе, в том числе если у самого скрипта нет своего Gui? Наверное это как-то возможно с помощью OnMessage, сам не могу разобратся.<br />И есть ли возможность получать в сообщении какие-то данные об этом окне?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 20 Mar 2013 01:30:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=70541#p70541</guid>
		</item>
	</channel>
</rss>
