Что нового

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Это очень маловероятно. Выложи полностью рабочий код с правками.
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Во вложении. Сам скрипт, шрифт и картинка. картинку класть на диск С в корень
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ну да, на картинке не работает. Вот первое, что пришло в голову, даже с эффектом плавного появления.

Код:
Func ScreenSaver_Proc()

	$FontSize = RegRead("HKEY_CURRENT_USER\Software\ShaDo's SCR", "Font Size")
	$FontColor = RegRead("HKEY_CURRENT_USER\Software\ShaDo's SCR", "Font Color")

	If (Not $FontSize) Or ($FontSize <= 0) Then
		$FontSize = 40
	EndIf
	If (Not $FontColor) Or ($FontColor <= 0) Then
		$FontColor = 0xFFFFFF
	EndIf

	HotKeySet("{ESC}", "CloseScreenSaver")

	Opt("GuiOnEventMode", 1)

	$H = @HOUR
	$M = @MIN
	$S = @SEC

	$Form1 = GUICreate("", 1280, 1024, 0, 0, $WS_POPUP, $WS_EX_TOPMOST)
	GUISetOnEvent($GUI_EVENT_MOUSEMOVE, "CloseScreenSaver")
	GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "CloseScreenSaver")
	GUICtrlCreatePic("C:\bg.gif", 0, 0, 1280, 1024)
	GUICtrlSetState(-1, $GUI_DISABLE)
	$Time1 = GUICtrlCreateLabel($H & ':' & $M & ':' & $S, 272, 110, 714, 212)
	GUICtrlSetFont(-1, '155', -1, -1, '20th Century Font')
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetColor(-1, 0xDADADA)
	GUISetCursor(16, 1)

	$Form2 = GUICreate("", 714, 212, 272, 110, BitOR($WS_DISABLED, $WS_POPUP), $WS_EX_TOPMOST, $Form1)
	GUICtrlCreatePic("C:\bg.gif", -272, -110, 1280, 1024)
	GUICtrlSetState(-1, $GUI_DISABLE)
	$Time2 = GUICtrlCreateLabel($H & ':' & $M & ':' & $S, 0, 0, 714, 212)
	GUICtrlSetFont(-1, '155', -1, -1, '20th Century Font')
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUICtrlSetColor(-1, 0xDADADA)
	GUISetCursor(16, 1)
	WinSetTrans($Form2, '', 0)

	$Main_Timer = TimerInit()

	GUISetState(@SW_SHOW, $Form2)
	GUISetState(@SW_SHOW, $Form1)

	While 1
		$H = @HOUR
		$M = @MIN
		$S = @SEC
		GUICtrlSetData($Time2, $H & ':' & $M & ':' & $S)
		For $i = 1 To 255 Step 0.5
			WinSetTrans($Form2, '', $i)
		Next
		GUICtrlSetData($Time1, $H & ':' & $M & ':' & $S)
		WinSetTrans($Form2, '', 0)
		Sleep(1000)
	WEnd
EndFunc   ;==>ScreenSaver_Proc
 
Автор
sss

sss

Продвинутый
Сообщения
332
Репутация
96
Yashied, супер! Только одна маленькая не то что проблема, так, мелочь: иногда по 2 секунды пролетает. В принципе это не фатально и даже не страшно, но все-таки, может это можно устранить?

А Эффект - супер!
Начал разбираться в коде... Оригинально!

А, все - разобрался! Просто поставил Sleep(500) вместо Sleep(1000)
 

Guezt

Продвинутый
Сообщения
335
Репутация
82
OffTopic:
Yashied [url_ex=javascript:qq.OpenLink('[url=http://autoit-script.ru/index.php?topic=3917.msg29279#msg29279%27]Re: Преобразовать AutoIt Script в ScreenSaver - реализация)][?][/url_ex]
Ну да, на картинке не работает.
В Tab тоже не работает, почему то, не смог разобраться, при отключении $WS_EX_COMPOSITED работает все, а с ним вообще все элементы на всех закладках пропадают, кроме названий самих закладок :( p.s. грешу на режим OnEvent, но надо проверять.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А что это даст?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,486
Yashied [?]
Ничего в данном случае :smile: Просто я часто этот стиль применяю для обхода проблемы с мельканием элементов при изменений размера окна.
 
Верх