Что нового

[Мышь, клавиатура] скроллинг с отключением

NIkNIk12

Новичок
Сообщения
13
Репутация
0
Всем привет, понадобилось сделать скрипт..
Суть такова - эмуляция неприрывного скрола вниз, но что б когда надо по нажатию клавиши выполнения скрола приостанавливалось до нажатия другой клавиши, после чего скрол вновь начнется..
Просто с скролом разобрался, а как сделать паузы чет не могу допереть..
Спасибо.
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
В операционке, но по факту юзатся будет для вкладки браузера
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Вот пример. Код скрола только вставь.
Код:
Global $Paused
HotKeySet("{PAUSE}", "TogglePause");пауза
HotKeySet("{ESC}", "Terminate");выход

While 1
    Sleep(100)
	MouseWheel("down") ;тут твой код скроллинга
WEnd

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)        
    WEnd    
EndFunc

Func Terminate()
    Exit 0
EndFunc
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
Не работают пауза с выходом :(
МОжет у меня что не так поставлено? В папку инклюд закинута вроде IsPressedEx.au3
Но хоткеи не пашут нивкакую
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
NIkNIk12
Не работают пауза с выходом
Странно. Вышеприведенный код, взятый из справки, у меня нормально работает. А чисто этот мой пример работает? Если да, тогда покажи свой код, может там что-то не так.
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
Пробовал по-всякому, сам много разных вариантов и ваш код под копирку (вставил ток цифры в скролл) - нифига хоткеи не хотят обрабатываться.
Компилю, запускаю - скролится, да, но реакции на Pause и Esc никакой, пробовал менять клавиши - тож глухо.
Потом добавил #include <IsPressedEx.au3> - аналогично
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
NIkNIk12, покажи свой код, что там у тебя получилось.
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
Код:
#include "C:\exc\AutoIt3\Include\IsPressedEx.au3"

Global $Paused
HotKeySet("p", "TogglePause");пауза
HotKeySet("q", "Terminate");выход

While 1
    Sleep(100)
    MouseWheel("down",9999) ;тут твой код скроллинга
WEnd

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
    WEnd
EndFunc

Func Terminate()
    Exit 0
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
NIkNIk12,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

MnM

Post-Hardcore
Сообщения
679
Репутация
90
NIkNIk12, C2H5OH если не ошибаюсь имел в виду выложить ваш код вместе с операциями Scroll, а не тот что вам дал Yuriy
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Та он выложил...
Проблема понятна, но помочь не можем пока не будут внесены исправления в соответствии с предупреждением модератора.
NIkNIk12, давай реагируй.
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
Извиняюсь, искал тег нужный и не нашел(
Поправил.
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
madmasles
А почему с клавишами pause и esc тоже не работает?
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
madmasles [?]

На работе :smile:
Но там ничего выдающегося, собственно столкнулся с скриптами впервые сегодня.
Пытался какими-то простыми вариантами хотябы просто посмотреть как работает HotKeySet и ничего не вышло, компилится, запускается, но нажатие кнопок не обрабатывает.

Код, предложенный товарищем Yuriy тоже не работает, хотя вроде как должен. Подозреваю с моей стороны что-то не так?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
NIkNIk12:
А почему с клавишами pause и esc тоже не работает?


Потому что клавиши pause и esc тут ни при чём.
Проблема в Вашем допиливании кода, а именно в
Код:
MouseWheel("down",9999)

Вот зачем было менять скрипт от Yuriy ?

Всё дело в том что у AutoIt нет многозадачности. Интерпретатор берёт скрипт и выполняет его последовательно, строчка за строчкой. И во время выполнения одной команды невозможно выполнение ничего другого. В том числе и функций HotKey.

У меня на компе
Код:
MouseWheel("down",9999)

выполняется 105 секунд.
И сколько ты ни жми кнопки, в эти 105 секунд ну ничего не произойдёт. А вот только интерпретатор закончит выполнять эту команду, так сразу и начнёт анализировать какие кнопки были нажаты...

Так что, товарищь NIkNIk12, вы того... Лучше оставьте всё как было у Yuriy.
Если всё таки хочется хоть что-то вставить, то у меня при
Код:
MouseWheel("down",99)

скрипт ведёт себя вполне пристойно и без запинки реагирует на HotKey
 
Автор
N

NIkNIk12

Новичок
Сообщения
13
Репутация
0
C2H5OH
Я похоже совсем плох...
Спасибо за разъяснение про многозадачность.
Щас вот просто втупую скопировал код Юрия, выход заработал, а пауза нет :stars:
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
У меня всё работает - и пауза, и выход.
Код:
Global $Paused = False
HotKeySet("p", "TogglePause");пауза
HotKeySet("q", "Terminate");выход

$i = 0
While 1
    Sleep(100)
	$begin = TimerInit()
    MouseWheel("down",99) ;тут твой код скроллинга
	$dif = TimerDiff($begin)
	$i += 1
	ToolTip($i&" Время выполнения скроллинга "&Floor($dif/1000)&" секунд", 0,0)
WEnd

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
		ToolTip("Пауза", 0,0)
        Sleep(100)
    WEnd
EndFunc

Func Terminate()
    Exit 0
EndFunc
 
Верх