<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Получение и обработка, отправка WM_сообщений]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=7632</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7632&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Получение и обработка, отправка WM_сообщений».]]></description>
		<lastBuildDate>Thu, 27 Sep 2012 04:51:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64257#p64257</link>
			<description><![CDATA[<p>Спасибо! Теперь все начинает проясняться. Буду разбираться с приведенными примерами.</p>]]></description>
			<author><![CDATA[null@example.com (studentarh)]]></author>
			<pubDate>Thu, 27 Sep 2012 04:51:13 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64257#p64257</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64243#p64243</link>
			<description><![CDATA[<div class="codebox"><pre><code>
lparam := MAKELONG(123, 234) ; записываем в «одну переменную» два значения.
MsgBox % lparam ; так выглядит lparam содержащий значения координат x = 123, y = 234
MsgBox % LOWORD(lparam) ; читаем младшее слово lparam, его значение равно ранее заданной x координате
MsgBox % HIWORD(lparam) ; читаем старшее слово lparam, его значение равно ранее заданной y координате

points := MAKEPOINTS(MAKELONG(123, 234)) ; записываем координаты в виде одного LONG, записываем LONG в стандартную структуру.
MsgBox % &quot;x: &quot; LOWORD(NumGet(points)) &quot; y: &quot; HIWORD(NumGet(points)) ; Получаем содержимое структуры (LONG) читаем младшее и старшее слово. Подробности по ссылкам в конце сообщения.

; Исправлено во имя здравого смысла
MAKEPOINTS(l)
{
    VarSetCapacity(points, 4) ; Int он же LONG занимает 32 бита (4=32/8)
    , NumPut(l, points, 0, &quot;Int&quot;)
    , VarSetCapacity(points, -1) ; http://l.autohotkey.net/docs/commands/VarSetCapacity.htm
    return points
}

MAKELONG(a, b)
{
    return (a &amp; 0xffff) | ((b &amp; 0xffff) &lt;&lt; 16)
}

LOWORD(l)
{
    return l &amp; 0xffff
}

HIWORD(l)
{
    return (l &gt;&gt; 16) &amp; 0xffff
}</code></pre></div><p><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms632631%28v=vs.85%29.aspx">WM_MOVE message</a>, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd162808%28v=vs.85%29.aspx">POINTS structure</a>, <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx">Windows Data Types</a></p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Wed, 26 Sep 2012 15:27:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64243#p64243</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64240#p64240</link>
			<description><![CDATA[<p>Скрипт отправляет сообщения не &quot;себе&quot;, а конкретному окну. Можно отправлять сообщения в том числе и окнам, созданным самим скриптом. Для отправления сообщений используются команды <a href="http://script-coding.com/AutoHotkey/SendMessage.html">PostMessage / SendMessage</a>, для работы с сообщениями, принимаемыми окнами скрипта, и с их параметрами — функция <a href="http://l.autohotkey.net/docs/commands/OnMessage.htm">OnMessage()</a>.<br /></p><div class="codebox"><pre><code>Gui, Show, w200 h200
OnMessage(WM_MOVE := 0x3, &quot;WM_MOVE&quot;)
return

WM_MOVE(wp, lp, msg, hwnd)
{
   x_client := lp &amp; 0xFFFF
   y_client := lp &gt;&gt; 16
   ToolTip % &quot;x_client = &quot; x_client &quot;`ny_client = &quot; y_client &quot;`nmsg = &quot; msg &quot;`nhwnd = &quot; hwnd
}</code></pre></div><div class="quotebox"><cite>studentarh пишет:</cite><blockquote><p>Например, в сообщении WM_MOVE, если я правильно понял, lParam содержит новые координаты окна, которое получает это сообщение.</p></blockquote></div><p>Не совсем правильно, там координаты его клиентской области.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 26 Sep 2012 15:11:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64240#p64240</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=64239#p64239</link>
			<description><![CDATA[<p>Как&nbsp; получить отдельные составлющие параметров wParam, lParam?</p><p>Например, в сообщении WM_MOVE, если я правильно понял, lParam содержит новые координаты окна, которое получает это сообщение. Но lParam - одно значение, как из него получить отдельно координату x и отдельно y?<br />Как в данном примере получить наоборот, lParam, если известны координаты x и y?</p><p>Может ли скрипт отправлять такие сообщения сам себе? Все ли WM_сообщения могут быть отправлены скриптом себе?</p>]]></description>
			<author><![CDATA[null@example.com (studentarh)]]></author>
			<pubDate>Wed, 26 Sep 2012 14:39:57 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=64239#p64239</guid>
		</item>
	</channel>
</rss>
