1

Тема: AHK: Прокрутка на определённое количество строк

При запуске кода


#If WinActive("ahk_class XLMAIN")
{
	WheelDown::
	MouseWheel("up", 10)
	Return

}

пишет "Error:  Call to nonexistent function." на строку "---> 006: MouseWheel("up", 10)".
Как подключить эту функцию?

2

Re: AHK: Прокрутка на определённое количество строк

А где она у вас находится?
Можно так:

#If WinActive("ahk_class XLMAIN")
WheelDown:: MouseClick, WheelUp,,, 10
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Прокрутка на определённое количество строк

teadrinker пишет:

А где она у вас находится?
Можно так:

#If WinActive("ahk_class XLMAIN")
WheelDown:: MouseClick, WheelUp,,, 10

Находится просто в отдельном файле. Да, ваш код работает, спасибо за подсказку!

Правда, оказывается AHK прокручивает не на 10 строк, а делает 10 оборотов колёсиком. Есть ли какая-либо функция, в которой можно указать именно количество строк прокрутки?

4

Re: AHK: Прокрутка на определённое количество строк

Можно так попробовать:

#If WinActive("ahk_class XLMAIN")
WheelDown::
   PrevValue := SetWheelScrollLines(1)
   MouseClick, WheelUp,,, 10
   SetWheelScrollLines(PrevValue)
   Return
   
SetWheelScrollLines(NewValue)
{
   static SPI_GETWHEELSCROLLLINES := 0x68, SPI_SETWHEELSCROLLLINES := 0x69, SPIF_UPDATEINIFILE := 0x1, SPIF_SENDCHANGE := 0x2
   DllCall("SystemParametersInfo", UInt, SPI_GETWHEELSCROLLLINES, UInt, 0, PtrP, PrevValue, UInt, 0)
   DllCall("SystemParametersInfo", UInt, SPI_SETWHEELSCROLLLINES, UInt, NewValue, PtrP, 0, UInt, SPIF_UPDATEINIFILE|SPIF_SENDCHANGE)
   Return PrevValue
}

Но не факт, что сработает, как ожидалось.
Предыдущий пост цитировать не нужно, ознакомьтесь с правилами цитирования.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: yalanne, 2015-10-27 19:57:20)

Re: AHK: Прокрутка на определённое количество строк

Если сообщение посылать ,то там одна строка мотается.

#if hwnd := WinActive("ahk_class Notepad")
WheelDown::  
ControlGetFocus, fcontrol, ahk_id %hwnd%
Loop 10 ; количество строк.
    SendMessage, 0x115, 1, 0, %fcontrol%,ahk_id %hwnd% ; msg:WM_VSCROLL , wParam:SB_LINEDOWN
KeyWait % A_ThisHotkey,T0.01
return