<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AutoHotkey: автопрокрутка окна]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=351</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=351&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AutoHotkey: автопрокрутка окна».]]></description>
		<lastBuildDate>Mon, 02 Apr 2007 05:35:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AutoHotkey: автопрокрутка окна]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=2395#p2395</link>
			<description><![CDATA[<p>Дальнейшее развитие альтернативного способа реализации от <strong>YMP</strong>. Заставляем процедуру таймера проверять, какое окно под мышью в данный момент. Если другое - останавливаться. А также останавливаться, если окно неактивно.<br /></p><div class="codebox"><pre><code>#UseHook

WheelDown::
WheelUp::
  SetTimer, Scroll, Off
  If (A_PriorHotkey=A_ThisHotkey) and (A_TimeSincePriorHotkey&lt;20)
  {
    MouseGetPos,,, WinID_Start           ; Запоминает HWND окна под курсором.
    SetTimer, Scroll, 100
  }
  Else
    Click %A_ThisHotkey%
Return

Scroll:
  MouseGetPos,,, WinID                                    ; Проверка.
  If (WinID=WinID_Start) and WinActive(&quot;ahk_id&quot; . WinID)
    Click %A_ThisHotkey%
  Else
    SetTimer, Scroll, Off
Return

#UseHook, Off</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Mon, 02 Apr 2007 05:35:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=2395#p2395</guid>
		</item>
		<item>
			<title><![CDATA[Re: AutoHotkey: автопрокрутка окна]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=2331#p2331</link>
			<description><![CDATA[<p>Альтернативный способ реализации идеи. Измеряем не число шагов в единицу времени, а время между шагами.<br /></p><div class="codebox"><pre><code>#UseHook   ; Делает то же, что префикс $, но для всех гор. клавиш ниже.

WheelDown::
WheelUp::
  SetTimer, Scroll, Off
  If (A_PriorHotkey=A_ThisHotkey) and (A_TimeSincePriorHotkey&lt;20) ; 20 миллисекунд.
    SetTimer, Scroll, 100
  Else
    Click %A_ThisHotkey%
Return

Scroll:
  Click %A_ThisHotkey%
Return

#UseHook, Off</code></pre></div><p>Автор скрипта - <strong>YMP</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Wed, 28 Mar 2007 13:00:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=2331#p2331</guid>
		</item>
		<item>
			<title><![CDATA[AutoHotkey: автопрокрутка окна]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=2106#p2106</link>
			<description><![CDATA[<p>Удобно, когда при резком &quot;рывке&quot; колеса мыши вверх или вниз включается автопрокрутка окна. Скрипт:<br /></p><div class="codebox"><pre><code>;Any mouse = Logitech Revolution
;(C)2007 by Steve Key
;Непрерывная прокрутка при быстром движении колесом мыши
;Стоп - щелчок колеса в противоположную сторону
;Что-то похожее применяется в новых мышах Logitech Revolution,
;только там используется массивное колесо и куча софта...

;Я нагло содрал пример, в помощи к программе AHK, статья Set Timer,
;называемый &quot;Пример №3&quot;, и доработал его под свои задачи.
;Даже некоторые комментарии из него остались...

;Не знаю, нужны ли нижеследующие команды:
Process, Priority, , High
SetKeyDelay, 10, 10
#NoEnv
SendMode Input
#InstallMouseHook
Thread, interrupt, 0

;Обработка прокрутки колеса вниз
$WheelDown::
     Send, {WheelDown} ;при вращении посылаем как минимум один щелчек колеса

    settimer, su, off ;и останавливаем прокрутку вверх, если она запущена
; Команда SetTimer уже запущена, но прежде, чем она сработает,
; мы успеем собрать данные о количестве щелчков колеса за это время:
If md &gt; 0
{
    md += 1
    Return
}
; А вот и наш первый щелчок колеса. Устанавливаем счетчик в 1
; и запускаем таймер:
md = 1
SetTimer, tmd, 20 ; Идет подсчет количества щелчков колеса...
                                    ; в течение 20 миллисекунд - выставлено опытным путем
Return

;Таймер времени, в течение которого считаются щелчки колеса вниз
tmd:
SetTimer, tmd, Off ; отключение таймера

If md &gt; 2 ; Если колесо успело щелкнуть более двух раз (быстро крутанули)...
                    ;то запускается таймер повтора прокрутки колеса вниз
{
;скорость прокрутки задается здесь:
  settimer, sd, 100
}
; Вне зависимости от того, какое действие было выполнено, сбрасываем
; значение нашей переменной на ноль, чтобы подготовиться к следующей
; серии щелчков колеса:
md = 0
Return

;Обработка прокрутки колеса вверх
;смысл команд тот же самый, что и выше...
$WheelUp::
     Send, {WheelUp}

    settimer, sd, off

If mu &gt; 0
{
    mu += 1
    Return
}
mu = 1
SetTimer, tmu, 28 ; Идет ожидание количества нажатий клавиш
                                    ; в течение 28 миллисекунд - выставлено опытным путем
;Время ожидания разное для прокрутки вверх и вниз, потому что
;палец (у меня средний) лучше крутит колесо &quot;к себе&quot;, чем &quot;от себя&quot;.
return

;Таймер времени, в течение которого считаются щелчки колеса вверх
tmu:
SetTimer, tmu, Off

If mu &gt; 2
{
  settimer, su, 100
}

mu = 0
Return

;таймер повтора прокрутки вниз
sd:
            Send, {WheelDown}
return

;таймер повтора прокрутки вверх
su:
            Send, {WheelUp}
return</code></pre></div><p>Опубликовал <strong>Steve Key</strong>.<br />Недостатки: работает не во всех окнах, а в некоторых работает только после рывка колеса на заголовке окна. Прокрутка идёт рывками. Кроме того, прокрутка в вышеприведённом скрипте не останавливается, когда доходит до конца документа (например, запустив прокрутку вниз, можно получить интересный эффект, когда она дойдёт до конца документа: если нажать Ctrl+Home, не трогая мышь, документ опять начнёт сам прокручиваться вниз, и более того, если перевести курсор мыши на другое окно, то прокрутка будет действовать и там).<br />Несмотря на все недостатки, сама идея и реализация, несомненно, представляют интерес.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Fri, 09 Mar 2007 09:54:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=2106#p2106</guid>
		</item>
	</channel>
</rss>
