Что нового

Преобразовать AutoIt Script в ScreenSaver - реализация

sss

Продвинутый
Сообщения
332
Репутация
96
Всем привет. Хочу сделать свой хранитель экрана. Есть проги, которые делают из картинок скринсэйверы, но мне такие не нравятся. Можно ли настроить Windows, чтобы как скринсэйвер она запускала скомпилириванный Autoit Script? Или переделать exe в scr и опять-таки настроить Windows? Можно конечно сделать процесс который будет проверять активность пользователя, но он грузит систему. Возможно ли это вообще? Заранее спасибо!
 

Viktor217

Осваивающий
Сообщения
233
Репутация
31
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Вроде любую ехе можно переименовать в scr и оно будет работать, где-то читал об этом...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Я давно иследовал это дело, вот тема на оф. форуме: ScreenSaver Demo - Matrix included
Надо бы сюда её перевести.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

1) Создай exe-шник и переименуй в scr
2) Кинь scr файл в C:\WINDOWS\System32\

После всего этого твой скринсэйвер должен появится в писке скринсейверов :smile:

P.S. Я так всегда делаю.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Спасибо всем за помощь. Сейчас работаю по ссылке CreatoR'а, может что и получится)
 

dronet

Знающий
Сообщения
46
Репутация
8
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Когдато копался тоже по этому направлению.
Вот немногое могу сказать про комманды которые передаёт Windows программе заставке.
У меня они были такие.
/c:6031030 = Вызвать настройку заставки. - Зачем ети цифры я так и не понел.
/p = Запуск в окошке своиства экрана. - Почему-то команду давала 2 раза
/s = Запуск заставки.

У меня так и не получилось зделать отоброжение в окошке своиств экрана на Autoit.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

По ссылке CreatoR'a у меня все получается - и сам скринсейвер запускается, и настройки. Качал по той ссылке исходый файл и выдирал часть из него :smile: . Долго искал где сделано чтобы по движению мышки и нажатию клавы выходил из проги но нашел). Теперь оформляю: делаю темный переливчатый фон, часы в рамке, потом будут новости с какого-нибудь сайта, потом добавлю избранные видео... вообщем будет класс)

Команды использовал такие: /S - Проверка, запуск и т.д. настройки - пустая строка либо /c: (беру первые три символа)

Только что попробовал - с /p тоже что-то не получается. Но внимания не заострял.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

dronet [?]
Вызвать настройку заставки. - Зачем ети цифры я так и не понел
Это Dec-представление дескриптора родительского окна.
 

dronet

Знающий
Сообщения
46
Репутация
8
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Вот откопал на складе - Screensaver UDF. Может поможет в алгоритме, да и не только.
Вложение прикрепленно.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Столкнулся с проблемой - при обновлении элемента оно моргает. Как бороться?Пример - While 1 GuitrlSetData($time,@HOUR & ':' & @MIN & ':' & @SEC) Sleep(1000)Wend
Код:
В данном случае элемент Label "моргает черным" при новых данных. Смотрится некрасиво...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Sky-WaLkeR [?]
Столкнулся с проблемой - при обновлении элемента оно моргает. Как бороться?
Добавить в расширенные стили окна $WS_EX_COMPOSITED.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Re: Преобразовать AutoIt Script в ScreenSaver - возможно?

Тогда надпись пропадает, делаю на фоне картинки Pic. Если такой стиль ставить самому Label то тогда фон пропадает.

Переименовал тему, т.к. понятно что возможно. Здесь буду спрашивать про красивые эффекты и т.д.
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Sky-WaLkeR [?]
Можно конечно сделать процесс который будет проверять активность пользователя, но он грузит систему.
У меня часто происходит такая проверка. Если проверять хотя бы каждые 100 мсек, то нагрузка на процессор мизерная: не больше 1% (на моих ПК 0,3-0,7%). А проверяется с помощью: _Timer_GetIdleTime()
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
`p r o x y сказал(а):
С этим проблем нет уже, все завязано на ссылке от CreatoR'a. Но за развитие спасибо! Не знал такой команды.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Вот вся функция вывода скринсейвера Монитор 1280х1024, не стал морочиться с DeskTopHeight и Width
Код:
func ScreenSaver_Proc()
	Global $FontSize = RegRead("HKEY_CURRENT_USER\Software\ShaDo's SCR", "Font Size")
    If $FontSize = "" Or $FontSize <= 0 Then $FontSize = 40

	Global $FontColor = RegRead("HKEY_CURRENT_USER\Software\ShaDo's SCR", "Font Color")
    If $FontColor = "" Or $FontColor <= 0 Then $FontColor = '0xffffff'

	Opt("GuiOnEventMode", 1)
	HotKeySet("{ESC}", "CloseScreenSaver")
	$test=GUICreate('',1280,1024,0,0,$WS_POPUP)
	$bg=GUICtrlCreatePic('C:\Program Files\ShaDo\bg.gif',0,0,1280,1024,-1)
	$time=GUICtrlCreateLabel(@hour & ':' & @min & ':' & @sec,235,130,1000,300)
	GUICtrlSetColor($time,0xdadada)
	GUICtrlSetFont(-1, '155', -1,-1 ,'20th Century Font')
	GUICtrlSetBkColor($time,$GUI_BKCOLOR_TRANSPARENT)
	GUISetState()
	$Main_Timer = TimerInit()
	GUISetOnEvent($GUI_EVENT_MOUSEMOVE, "CloseScreenSaver")
	GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "CloseScreenSaver")
	GUISetBkColor(0)
	GUISetCursor(16, 1)
	while 1
		GUICtrlSetData($time,@hour & ':' & @min & ':' & @sec)
		Sleep(1000)
	WEnd
EndFunc

P.S. А вот CloseScreenSaver, там используется
Код:
Func CloseScreenSaver()
	If TimerDiff($Main_Timer) >= 500 Then
		GUIDelete($test)
		Exit
	EndIf
EndFunc
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Поднимаю тему. Как можно реализовать, чтобы надпись Label не моргала при обновлении данных (например время)? Пример наверху
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Код:
GUICreate('', @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR($WS_EX_COMPOSITED, $WS_EX_TOPMOST))
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
У меня так не отображается элемент Label, как будто я и не создавал его. В чем проблема? Ни код от Yashied'a, ни ссылка от 'p r o x y' не помогла...
 
Верх