<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Получение и обработка, отправка WM_сообщений]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=7632&amp;type=atom" />
	<updated>2012-09-27T04:51:13Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=7632</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64257#p64257" />
			<content type="html"><![CDATA[<p>Спасибо! Теперь все начинает проясняться. Буду разбираться с приведенными примерами.</p>]]></content>
			<author>
				<name><![CDATA[studentarh]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27804</uri>
			</author>
			<updated>2012-09-27T04:51:13Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64257#p64257</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64243#p64243" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-09-26T15:27:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64243#p64243</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64240#p64240" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2012-09-26T15:11:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64240#p64240</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Получение и обработка, отправка WM_сообщений]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=64239#p64239" />
			<content type="html"><![CDATA[<p>Как&nbsp; получить отдельные составлющие параметров wParam, lParam?</p><p>Например, в сообщении WM_MOVE, если я правильно понял, lParam содержит новые координаты окна, которое получает это сообщение. Но lParam - одно значение, как из него получить отдельно координату x и отдельно y?<br />Как в данном примере получить наоборот, lParam, если известны координаты x и y?</p><p>Может ли скрипт отправлять такие сообщения сам себе? Все ли WM_сообщения могут быть отправлены скриптом себе?</p>]]></content>
			<author>
				<name><![CDATA[studentarh]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27804</uri>
			</author>
			<updated>2012-09-26T14:39:57Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=64239#p64239</id>
		</entry>
</feed>
