<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=8849</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8849&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Скролинг неактивного окна/Чем заменить PostMessage».]]></description>
		<lastBuildDate>Sat, 02 Nov 2013 10:23:25 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76834#p76834</link>
			<description><![CDATA[<p>Видимо слишком большой&nbsp; у меня скрипт (2921 строка).</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 10:23:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76834#p76834</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76832#p76832</link>
			<description><![CDATA[<p>Не знаю. Мои эксперименты этого не подтвердили.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 10:20:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76832#p76832</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76828#p76828</link>
			<description><![CDATA[<p>Как только убрал тот лишний &quot;CoordMode&quot;, тот что в начале скрипта заработал. Значит все-таки отменяет.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 10:02:48 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76828#p76828</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76826#p76826</link>
			<description><![CDATA[<p>Не должна отменять. А процедуры хоткеев, пунктов меню, таймеров — это отдельные потоки и там эта команда только на сам поток действует. Функции выполняются в том потоке, из которого вызываются.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 09:45:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76826#p76826</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76820#p76820</link>
			<description><![CDATA[<p>Нашел, все-таки был еще 1 &quot;CoordMode&quot;, но он был точно такой-же, т.е. привязка к экрану.</p><p>Значит использование &quot;CoordMode&quot; где-либо еще отменяет его в качестве дефолтного и приходится ставить его перед всеми &quot;MouseGetPos&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 09:01:27 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76820#p76820</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76818#p76818</link>
			<description><![CDATA[<p>Не знаю. В справке написано, что поставленная в начало она меняет дефолтную настройку.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 08:53:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76818#p76818</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76816#p76816</link>
			<description><![CDATA[<p>Еще вопрос:<br />Почему в &quot;большом&quot; скрипте если не поставить &quot;CoordMode&quot; для мыши непосредственно перед &quot;MouseGetPos&quot; - скрипт отказывается работать?<br />Я пытался использовать &quot;CoordMode&quot; только в &quot;голове&quot; скрипта.<br />Хотя при этом в &quot;большом&quot; скрипте нигде больше не используется &quot;CoordMode&quot;.</p><p>Структура моего скрипта:<br /></p><div class="codebox"><pre><code>Условия
Переменные
Основной цикл в виде таймера
Горячие клавиши
Окно настройки, меню, и сохранение/чтение даных
Подпрограммы для перехода по GoSub
Функции
</code></pre></div><p>Может есть предложения как лучше &quot;отсортировать скрипт&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 08:35:09 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76816#p76816</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76811#p76811</link>
			<description><![CDATA[<p>Да, придётся.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 07:41:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76811#p76811</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76808#p76808</link>
			<description><![CDATA[<p>Спасибо. Не знал как это делается.</p><p>А можно ли обойтись без &quot;SetFormat&quot;, т.к. он изменяет представление всех переменных, или придется повторно его использовать для возврата к десятичным?</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 07:10:24 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76808#p76808</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76807#p76807</link>
			<description><![CDATA[<p>А вы попросите у него 16-ричное.<br /></p><div class="codebox"><pre><code>SetFormat, Integer, H
a=0x0011
b=0x0022
c:=a|b
msgbox,%a%`n%b%`n&quot;%c%&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 07:06:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76807#p76807</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76806#p76806</link>
			<description><![CDATA[<p>Спасибо за ответы.</p><div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>А что мешает проверить?</p></blockquote></div><p>Мешает то, что ahk выдает 10-ричное число на выходе.<br /></p><div class="codebox"><pre><code>a=0x0011
b=0x0022
c:=a|b
msgbox,%a%`n%b%`n&quot;%c%&quot;
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 06:34:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76806#p76806</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76805#p76805</link>
			<description><![CDATA[<p>Ещё исправил и упростил. Перед WindowFromPoint mX урезается до 32 бит; перед SendMessage — до 16. Всё для того, чтобы корректно работали отрицательные значения Х. Возможно, нули в начале и не нужны, но я не знаю в подробностях, как AutoHotkey хранит и обрабатывает числа, и хотел бы как-то ему показать, какой разрядности число имею в виду.<br /></p><div class="quotebox"><blockquote><p>1) Для чего здесь добавляется 16-ричный код?</p></blockquote></div><p>Для отрезания верхних битов числа. У отрицательных чисел они заполнены единицами, соответственно, помещение туда Y оператором | (побитовое или) ничего не даст.<br /></p><div class="quotebox"><blockquote><p>2) Какую функцию выполняет - | и &amp;? В справке на этот счет мало информации.</p></blockquote></div><p>Побитовое &quot;или&quot; и &quot;и&quot;. В Википедии можно почитать, например.<br /></p><div class="quotebox"><blockquote><p>3) Зачем Y умножать на 2 в степени 32?</p></blockquote></div><p>Чтобы сдвинуть его в верхнюю половину 64-битного числа. WindowFromPoint принимает структуру POINT, состоящую из двух 32-битных чисел. Я её передаю в виде одного 64-битного числа. Но тут и возникают проблемы, если Х отрицательное.<br /></p><div class="quotebox"><blockquote><p>И чему например будет равно выражение в итоге:</p></blockquote></div><p>А что мешает проверить?</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 06:29:26 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76805#p76805</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76803#p76803</link>
			<description><![CDATA[<p>Вот мой готовый вариант, который благодаря YMP&#039;у может прокручивать что угодно, где угодно и без потери основных функций ролика в системе.<br /></p><div class="codebox"><pre><code>
#SingleInstance,Force
#NoEnv
CoordMode,Mouse,Screen
DetectHiddenWindows,On
Menu,Tray,UseErrorLevel
SetBatchLines,-1
SetTitleMatchMode,2
SetWinDelay,-1
SetWorkingDir,%A_ScriptDir%
StringCaseSense,Off


scrollspeedup:=1


~*$WheelDown::
~*$WheelUp::
MouseGetPos,X,Y,mwin
WinGet,ActiveWin,id,A
stringtrimleft,Wheel,A_ThisHotkey,3
keywait,%Wheel%,L
if (whellwork=1)
  return
whellwork:=1
if !scrollspeedup
  scrollloop=1
else
{
  if A_TimeSincePriorHotkey&lt;400
  {
    if (!speedup:=speedup&gt;10 ? 0 : speedup=&quot;&quot; ? 1 : speedup+1)
      scrollmulti++
  }
  if (A_TimeSincePriorHotkey&gt;400 or A_ThisHotkey!=A_PriorHotkey)
  {
    scrollmulti=1
    speedup=
  }
  oldthishotkey:=a_thishotkey
  if scrollmulti&gt;65
    scrollmulti=65
  if A_TimeSincePriorHotkey&lt;17
    scrollloop=4
  else if A_TimeSincePriorHotkey&lt;20
    scrollloop=3
  else if A_TimeSincePriorHotkey&lt;30
    scrollloop=2
  else
    scrollloop=1
  scrollloop*=scrollmulti
}
if (A_OSVersion~=&quot;10.*?&quot;)
{
  if (scrollloop!=1)
  {
    if (Wheel=&quot;WheelUp&quot;)
      loop,% scrollloop
        mouseclick, WheelUp
    else
      loop,% scrollloop
        mouseclick, wheeldown
  }
}
else
{
  scroll:=Wheel=&quot;WheelUp&quot; ? (120*scrollloop+1)&lt;&lt;16 : Wheel=&quot;WheelDown&quot; ? -(120*scrollloop+1)&lt;&lt;16 : 0
  WheelWinID :=DllCall(&quot;WindowFromPoint&quot;,&quot;int64&quot;,(X&amp;0x00000000FFFFFFFF)|(Y&lt;&lt;32),&quot;ptr&quot;)
  WheelWinID2:=DllCall(&quot;WindowFromPoint&quot;,&quot;int64&quot;,(X&amp;0x00000000FFFFFFFF)|((Y-20)&lt;&lt;32),&quot;ptr&quot;)
  ControlGetFocus,focctrl,ahk_id %mwin%
  ControlGet,hfocctrl,Hwnd,,% focctrl,ahk_id %mwin%
  if (WheelWinID!=hfocctrl)
    ControlFocus,,ahk_id %WheelWinID%
  if (scroll!=0 and (scrollloop!=1 or ActiveWin!=mwin))
  {
    PoSTMessage,0x20A,Scroll,(X&amp;0x0000FFFF)|(Y&lt;&lt;16),,ahk_id %WheelWinID%
    If (ErrorLevel or (WheelWinID!=WheelWinID2))
      PoSTMessage,0x20A,Scroll,(X&amp;0x0000FFFF)|(Y&lt;&lt;16),,ahk_id %WheelWinID2%
  }
}
whellwork=0
return
</code></pre></div><p>Только нужно доработать режимы ускорения (сделать помягче).</p><p>Чуть не забыл. YMP, объясните пожалуйста что значит это выражение:<br /></p><div class="codebox"><pre><code>mX &amp; 0x00000000FFFFFFFF | mY&lt;&lt;32</code></pre></div><p>1) Для чего здесь добавляется 16-ричный код?<br />2) Какую функцию выполняет - | и &amp;? В справке на этот счет мало информации.<br />3) Зачем Y умножать на 2 в степени 32?<br />И чему например будет равно выражение в итоге:<br /></p><div class="codebox"><pre><code>0x0011 | 0x0022</code></pre></div><p>0x0033 или 0x1122 или 0x00110022?</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sat, 02 Nov 2013 05:38:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76803#p76803</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76802#p76802</link>
			<description><![CDATA[<p>Немного исправил вычисление Point, чтобы корректно работало при отрицательных значениях Х. Насколько помню, они получаются, если Рабочий стол расширен на второй монитор, стоящий слева. К сожалению, нет сейчас возможности проверить. Отрицательные Y (если 2-й монитор сверху) проблем вызывать не должны.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 02 Nov 2013 05:18:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76802#p76802</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скролинг неактивного окна/Чем заменить PostMessage]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=76794#p76794</link>
			<description><![CDATA[<p>Да так работает.<br />Спасибо большое.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Fri, 01 Nov 2013 18:43:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=76794#p76794</guid>
		</item>
	</channel>
</rss>
