<?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>https://forum.script-coding.com/viewtopic.php?id=7035</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7035&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)».]]></description>
		<lastBuildDate>Tue, 03 Apr 2012 05:18:21 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58767#p58767</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>там был отдельный файл конфигурации XML, куда заносятся<br />правила панорамирования для разных программ. Так что универсального решения, похоже, нет.</p></blockquote></div><p>Да, припоминаю, в описании функции в драйвере старой мышки так и было написано - мы работаем, более 40 программ (или как-то так) уже поддерживается...:P</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Tue, 03 Apr 2012 05:18:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58767#p58767</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58766#p58766</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Может, у тебя средняя кнопка мыши уже занята, вот скрипт и не пашет? Попробуй с другим сочетанием, например win+ЛКМ:<br /></p><div class="codebox"><pre><code>#LButton::
...
  if !GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
...</code></pre></div></blockquote></div><p>Ага, выяснил - при нажатии горячей кнопки окно программы, которая &quot;подчиняется&quot; скрипту (не ворд) быстренько сдвигается в левый верхний угол... И всё...:|</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Tue, 03 Apr 2012 05:17:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58766#p58766</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58765#p58765</link>
			<description><![CDATA[<div class="quotebox"><cite>creature.ws пишет:</cite><blockquote><p>Вот и повод начать использовать актуальную версию AHK.</p></blockquote></div><p>Спасибо за &quot;пинок в нужном направлении&quot;, сделано!:)</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Tue, 03 Apr 2012 05:15:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58765#p58765</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58744#p58744</link>
			<description><![CDATA[<p>Вот и повод начать использовать актуальную версию AHK.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Mon, 02 Apr 2012 12:45:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58744#p58744</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58743#p58743</link>
			<description><![CDATA[<p>У меня AHK НЕ L...</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Mon, 02 Apr 2012 11:18:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58743#p58743</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58739#p58739</link>
			<description><![CDATA[<div class="quotebox"><cite>Steve Key пишет:</cite><blockquote><p>... че-то у меня вообще не пашет...:(<br />ОнО к какой ДЛЛ-ке обращается?...</p></blockquote></div><p>Вполне стандартная функция <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb787585(v=vs.85).aspx">GetScrollPos</a> из <strong>user32.dll</strong><br />В справке&nbsp; Ahk_L (у меня версия 1.1.7.3 + win7 x86) сказано, что для вызова функций из этой и ряда других стандартных dll не нужно прописывать полное название вида user32.dll/GetScrollPos<br />Конечно, на сайте MS сказано, что GetScrollPos рекомендуется заменять GetScrollInfo... Не захотел возиться с передачей/приемом данных через структуры <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Я написал, что мой пример работает в MS Пайнте и Imagine, к ряду прочих программ с другим устройством контролов нужен другой подход.<br />Может, у тебя средняя кнопка мыши уже занята, вот скрипт и не пашет? Попробуй с другим сочетанием, например win+ЛКМ:<br /></p><div class="codebox"><pre><code>#LButton::
...
  if !GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
...</code></pre></div><p>Кстати, в просторах инета я натыкался на нечто подобное, написанное на С (кажется), так вот там был отдельный файл конфигурации XML, куда заносятся<br />правила панорамирования для разных программ. Так что универсального решения, похоже, нет.</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Mon, 02 Apr 2012 07:53:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58739#p58739</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58732#p58732</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Но он натолкнул меня на мысль написать вот такой скрипт:<br />...<br />В общем, разбираться и разбираться <img src="//forum.script-coding.com/img/smilies/neutral.png" width="15" height="15" /></p></blockquote></div><p>че-то у меня вообще не пашет...:(<br />ОнО к какой ДЛЛ-ке обращается? Мож, надо &quot;забросить&quot; в папку скрипта ТУ длл-ку, которая была в комплекте ТЕХ мышей?</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Mon, 02 Apr 2012 05:30:26 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58732#p58732</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58729#p58729</link>
			<description><![CDATA[<p>Прошу простить, получается, я &quot;гавкнул и в кусты&quot;, не было доступа к инету на выходных.</p><div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>А что есть СОДЕРЖИМОЕ окна? Элементы управления (контролы)?</p></blockquote></div><p>Я неточно сформулировал, содержимое документа, документ, собственно имеется в виду...</p><div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>Пользуюсь A4Tech с 2004 года, &quot;Панорамирование&quot; вроде бы представляет из себя аналог вертикальной полосы прокрутки. При этом курсор принимает вид ладошки, вцепившейся в окно. Если это оно, то в версии программы iWhelWorks Delux 7.80 эта возможность присутствует.</p></blockquote></div><p>Совершенно верно, сабж &quot;из тех времён&quot;... Только, не факт, что старинный драйвер мышки будет работать с современными...</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Mon, 02 Apr 2012 05:21:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58729#p58729</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58721#p58721</link>
			<description><![CDATA[<p>Пример из справки не совсем то, что нужно - SB_LINELEFT, SB_LINEUP и прочие сдвигают окно на слишком большое значение, не получается плавный сдвиг вместе с мышью.<br />Но он натолкнул меня на мысль написать вот такой скрипт:<br /></p><div class="codebox"><pre><code>MButton::
   MouseGetPos, X, Y, id, fcontrol,2
   X0 := DllCall(&quot;GetScrollPos&quot;, Int, fcontrol, Int, 0, Int)
   Y0 := DllCall(&quot;GetScrollPos&quot;, Int, fcontrol, Int, 1, Int)
   Loop {
      MouseGetPos, X_now, Y_now
      SendMessage, 0x114, (((X0-X_now+X)&lt;&lt;16)^5), 0,, ahk_id %fcontrol%
      SendMessage, 0x115, (((Y0-Y_now+Y)&lt;&lt;16)^5), 0,, ahk_id %fcontrol%
      if !GetKeyState(&quot;MButton&quot;, &quot;P&quot;)
         break
   }
return</code></pre></div><p>Средняя кнопка мыши прекрасно таскает содержимое Paint&#039;а и просмотрщика ТКоммандера (Imagine)... Но не работает в Опере и Word&#039;е.<br />Насколько я понял, в Ворде сообщения надо посылать непосредствено полосам прокрутки, которые имеют свои hwnd...<br />В общем, разбираться и разбираться <img src="//forum.script-coding.com/img/smilies/neutral.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Sun, 01 Apr 2012 21:07:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58721#p58721</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58720#p58720</link>
			<description><![CDATA[<p>Вышел вот такой вот скрипт, недостаток в том что он прокручивает поочерёдно по горизонтали и по вертикали, для прокрутки по диагонали необходимо немного доработать <img src="//forum.script-coding.com/img/smilies/tongue.png" width="15" height="15" /></p><div class="codebox"><pre><code>
CoordMode Mouse, Screen
VarSetCapacity(pt,8)
ScrlIgnoreStyle:=0

^RButton::
MouseGetPos prevmx,prevmy,hParentWnd,hChildWnd,2
if !hChildWnd
hChildWnd:=hParentWnd
SendMessage 132,0,prevmy&lt;&lt;16|prevmx,,ahk_id %hChildWnd% ; WM_NCHITTEST 132
if ErrorLevel&lt;&gt;1 ; HTCLIENT 1
return
if !ScrlIgnoreStyle
{
	; WS_HSCROLL 0x100000 WS_VSCROLL 0x200000
	WndStyle:=DllCall(&quot;GetWindowLong&quot;,&quot;uint&quot;,hChildWnd,&quot;int&quot;,-16) ; GWL_STYLE -16
	if (WndStyle&amp;0x200000)
	ScrlV:=1
	else ScrlV:=0
	if (WndStyle&amp;0x100000)
	ScrlH:=1
	else ScrlH:=0
	if !(ScrlV|ScrlH)
	{
		WndStyle:=DllCall(&quot;GetWindowLong&quot;,&quot;uint&quot;,hChildWnd,&quot;int&quot;,-16) ; GWL_STYLE -16
		if (WndStyle&amp;0x200000)
		ScrlV:=1
		else ScrlV:=0
		if (WndStyle&amp;0x100000)
		ScrlH:=1
		else ScrlH:=0
	}
	if !(ScrlV|ScrlH)
	return
}
While % GetKeyState(&quot;RButton&quot;,&quot;P&quot;)
{
	DllCall(&quot;GetCursorPos&quot;,&quot;uint&quot;,&amp;pt)
	mx:=NumGet(pt), my:=NumGet(&amp;pt+4)
	scrllr:=prevmx-mx,scrlud:=prevmy-my
	if ScrlH|ScrlIgnoreStyle
	if (scrllr&gt;0)
	{
		Loop % scrllr
		SendMessage 276,0,0,,ahk_id %hChildWnd%
		prevmx:=mx
	}
	else if (scrllr&lt;0)
	{
		Loop % Abs(scrllr)
		SendMessage 276,1,0,,ahk_id %hChildWnd%
		prevmx:=mx
	}
	if ScrlV|ScrlIgnoreStyle
	if (scrlud&gt;0)
	{
		Loop % scrlud
		SendMessage 277,0,0,,ahk_id %hChildWnd%
		;Send {WheelUp}
		prevmy:=my
	}
	else if (scrlud&lt;0)
	{
		Loop % Abs(scrlud)
		SendMessage 277,1,0,,ahk_id %hChildWnd%
		;Send {WheelDown}
		prevmy:=my
	}
	;DllCall(&quot;ScrollWindow&quot;,&quot;uint&quot;,hChildWnd,&quot;int&quot;,prevmx-mx,&quot;int&quot;,prevmy-my,&quot;uint&quot;,0,&quot;uint&quot;,0)
	;ToolTip % &quot;lr &quot; scrllr &quot; ud &quot; scrlud
	Sleep 250
}

return

+ScrollLock::
ScrlIgnoreStyle:=!ScrlIgnoreStyle
return

Esc::
ExitApp

/*
WM_HSCROLL 276
WM_VSCROLL 277
WM_NCHITTEST 132

SB_LINEUP	     0
SB_LINEDOWN	     1
SB_LINELEFT	     0
SB_LINERIGHT     1
SB_PAGEUP	     2
SB_PAGEDOWN	     3
SB_PAGELEFT	     2
SB_PAGERIGHT     3
SB_THUMBPOSITION 4
SB_THUMBTRACK    5
SB_ENDSCROLL     8

HTERROR (-2)
HTTRANSPARENT (-1)
HTNOWHERE 0
HTCLIENT 1
HTCAPTION 2
HTSYSMENU 3
HTGROWBOX 4
HTSIZE 4
HTMENU 5
HTHSCROLL 6
HTVSCROLL 7
HTMINBUTTON 8
HTMAXBUTTON 9
HTREDUCE 8
HTZOOM 9
HTLEFT 10
HTSIZEFIRST 10
HTRIGHT 11
HTTOP 12
HTTOPLEFT 13
HTTOPRIGHT 14
HTBOTTOM 15
HTBOTTOMLEFT 16
HTBOTTOMRIGHT 17
HTSIZELAST 17
HTBORDER 18
HTOBJECT 19
HTCLOSE 20
HTHELP 21
*/</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (kirtech)]]></author>
			<pubDate>Sun, 01 Apr 2012 20:46:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58720#p58720</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58694#p58694</link>
			<description><![CDATA[<p><a href="http://www.autohotkey.com/docs/Hotkeys.htm#Wheel">Уже</a> опробовано.</p>]]></description>
			<author><![CDATA[null@example.com (Grey)]]></author>
			<pubDate>Sun, 01 Apr 2012 13:23:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58694#p58694</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58693#p58693</link>
			<description><![CDATA[<p>Интересная задумка, хотелось бы силами AHK решить эту задачу, без доп.софта, причем двигать содержимое не тоько по Y, но и по X.<br />Можно попробовать через SendMessage, вдруг получиться задействововать <a href="http://platonov-andrei.narod.ru/Delphi/WM_HELP/wm_HScroll.htm">wm_HScroll</a> ?</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Sun, 01 Apr 2012 12:56:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58693#p58693</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58690#p58690</link>
			<description><![CDATA[<p>А что есть СОДЕРЖИМОЕ окна? Элементы управления (контролы)? Пользуюсь A4Tech с 2004 года, &quot;Панорамирование&quot; вроде бы представляет из себя аналог вертикальной полосы прокрутки. При этом курсор принимает вид ладошки, вцепившейся в окно. Если это оно, то в версии программы iWhelWorks Delux 7.80 эта возможность присутствует.<br />В AutoHotkey см. справку по разделу &quot;List of Keys and Mouse/Joystick Buttons&quot; (Список клавиш и кнопок мыши/джойстика. Ник переводчика: Дед Мазай):<br />WheelDown - поворот колеса мыши &quot;вниз&quot;<br />WheelUp - поворот колеса мыши &quot;вверх&quot;<br />Например, ставим на среднюю кнопку мышки: пока кнопка не будет отжата, проверять координаты курсора относительно экрана. Если координаты изменились, разницу поделить на скорость прокрутки. Полученное число поворотов колёсика посылаем в целевое окно.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Sun, 01 Apr 2012 11:52:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58690#p58690</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Панорамирование окна (сдвиг содержимого за курсором мыши)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58676#p58676</link>
			<description><![CDATA[<p>Двигать окно за стрелочкой мыши, причем даже за любую его часть (а не только за заголовок) - это на AHK никакой проблемы не представляет.<br />А вот нельзя ли заставить двигаться СОДЕРЖИМОЕ окна (естественно, при условии что в окне есть &quot;лифты&quot;)?<br />Была такая функция в &quot;драйвере&quot; мыши A4Tech (очень старой версии, в теперешних нет), очень удобно, двигалось содержимое любой программы, Word, Page Maker, Photoshop - любой!<br />Могу даже выложить ТЕ DLL-ки, может быть, можно использовать некую процедуру из них?</p>]]></description>
			<author><![CDATA[null@example.com (Steve Key)]]></author>
			<pubDate>Sun, 01 Apr 2012 06:57:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58676#p58676</guid>
		</item>
	</channel>
</rss>
