;Find Log File information
;Only allow one instance of the program to run.
Global $pictureFolder ;Fixes declared warning
;Settings
;====================================
;Can be edited via external text file (FSS.txt)
GetSettings()
;====================================
Global $taskbarActivationHide = 0
Global $imageCount = $imageList[0]
Global $imageShown[$imageCount + 1]
Global $smImageChangeBlack = 0
Global $smImageWidth, $smImageHeight, $smpHeight, $smpWidth, $smCenterX, $smCenterY, _
$smPicName, $activeWindowPosition, $smRefreshImage, $smImageChangeTimer, $smSSMTimer, _
$startWithWindows, $closeWithScreensaver, $smPic, $smGdiPic, $position
Global $pmImageWidth, $pmImageHeight, $pmpHeight, $pmpWidth, $pmCenterX, $pmCenterY, _
$pmPicName, $pmSSTimer, $pmPic, $pmGdiPic, $pmSSChangeTimer, $blinkTaskbar, $forceFSSOn
Global $pmGUIhandle, $smGUIhandle, $captureError
Global $changeQuadrant = ($ssChangePercent * 0.01) * ($ssRows * $ssColumns)
Global $screenShotCount = $ssRows * $ssColumns
Global $currentXpos, $currentYpos, $result
;Prevents CloseProgram() function on startup
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Close Program", "REG_SZ", 0)
;Preliminary setup - Creates GUI, displays 1 image
;====================================
GetImageForDisplaySM()
GetImageForDisplayPM()
CreateGUI()
MoveGUIWindow()
$smImageChangeTimer = TimerInit() ;Reset Image Change Timer
$pmSSTimer = TimerInit() ;Reset Primary Screensaver Timer
$pmSSChangeTimer = TimerInit() ;Reset Primary Screensaver Image Change Timer
ShowImageSM()
ShowImagePM()
;Main Program
;====================================
;Debug
;~ ToolTip(CheckIfFSSshouldDisplay() & @CRLF & _
;~ "Active: " & $activeWindowPosition[0] & ", " & $activeWindowPosition[1] & @CRLF & _
;~ "Mouse: " & MouseGetPos(0) & ", " & MouseGetPos(1) & @CRLF & _
;~ "Desktop: " & $desktop & @CRLF & _
;~ "Monitor: " & @DesktopWidth & "x" & @DesktopHeight _
;~ , 100, 5)
;======
;~ Local $temp = _Timer_GetIdleTime()
;~ ToolTip("SS: " & $screenSaverIsOn & @CRLF & "Idle: " & $temp, 100, 5)
;==========================
;These functions are set in settings (FSS.txt)
ShowTrayIcon() ;Should Tray Icon be shown?
StartWithWindows() ;Start program with Windows? (doesn't function)
;================
AlwaysOnTop() ;Force slideshow to be on top of other windows
LoseFocus() ;Lose focus in case slideshow becomes the active window
;Should Fullscreen Slideshow be on or off
If CheckIfFSSshouldDisplay
() = "Show" Then
ShowFSS()
HideFSS()
ScreensaverOperations()
ChangeImageSM()
DisplayTaskbar()
CloseProgram()
;Only every 5 times
LogProgram("Loop Count: " & $LoopCount)
$LoopCount = 1
;Pre-cautionary in case of changes in Monitor dimensions (if secondary monitor is unplugged)
MoveGUIWindow()
;Check settings for changes
GetSettings()
$LoopCount += 1
LogProgram
(@CRLF & "=======================================================================")
If $logFileSize > 5242880 Then ;5 megabytes
;Allow CPU to rest
;Beginning of Functions
;====================================
LogProgram("=Get Settings=")
LogProgram("lineNumber: " & $lineNumber)
Local $lineSplit, $description, $value
;Move to the Fullscreen Slideshow Section
While $line <> "Fullscreen Slideshow"
LogProgram("lineNumber: " & $lineNumber)
LogProgram("line: " & $line)
$lineNumber += 1
;Read until the next section
While $line <> "Fullscreen Screensaver"
If $line = "Fullscreen Screensaver" Then
;Split line by Description and value
$description = $lineSplit[1]
$value = $lineSplit[2]
If $description = "Picture Folder" Then
LogProgram("Picture Folder: " & $value)
$pictureFolder = $value
LogProgram("Show Tray Icon: " & $value)
ElseIf $description = "Secondary Monitor Width" Then
LogProgram("SM Width: " & $value)
ElseIf $description = "Secondary Monitor Height" Then
LogProgram("SM Height: " & $value)
ElseIf $description = "Monitor Position (Left, Right)" Then
LogProgram("SM Position: " & $value)
ElseIf $description = "Activation Mode (Inactive, Timer)" Then
LogProgram("SM Activation Mode: " & $value)
Global $smActivationMode = $value
ElseIf $description = "Screensaver Mode Timer Seconds" Then
LogProgram("SMSSM Seconds: " & $value)
$smSSMsec = $smSSMsec * 1000 ;Convert to milliseconds
ElseIf $description = "Change Method (Timer, Refresh)" Then
LogProgram("SM Change Method: " & $value)
Global $smChangeMethod = $value
ElseIf $description = "Image Change Time (In Seconds)" Then
LogProgram("SM Image Change Seconds: " & $value)
Global $smImageChangeSec = $value
$smImageChangeSec = $smImageChangeSec * 1000 ;Convert to milliseconds
ElseIf $description = "Image Order (Ordered, Random, Random No Repeat)" Then
LogProgram("SM Image Order: " & $value)
ElseIf $description = "Taskbar Size (Default: 40)" Then
LogProgram("Taskbar Size: " & $value)
ElseIf $description = "Start with Windows (Yes, No)" Then
LogProgram("Start with Windows: " & $value)
Global $startWithWindows = $value
$lineNumber += 1
$lineNumber += 2 ;Move past 'Fullscreen Screensaver' line
;Read until the next section
While $line <> ";===================================="
LogProgram("lineNumber: " & $lineNumber)
LogProgram("line: " & $line)
If $line = ";====================================" Then
;Split line by Description and value
$description = $lineSplit[1]
$value = $lineSplit[2]
If $description = "Turn Screensaver On (Yes, No)" Then
LogProgram("Screensaver Turned On?: " & $value)
Global $screensaverActivated = $value
ElseIf $description = "Activation Time (In Seconds)" Then
LogProgram("Screensaver Activation Seconds: " & $value)
Global $pmSSActivationSec = $value
$pmSSActivationSec = $pmSSActivationSec * 1000 ;Convert to milliseconds
ElseIf $description = "Image Change Time (In Seconds)" Then
LogProgram("Screensaver Image Change Seconds: " & $value)
Global $pmSSChangeImageSec = $value
$pmSSChangeImageSec = $pmSSChangeImageSec * 1000 ;Convert to milliseconds
ElseIf $description = "Taskbar Blink Time (In Seconds)" Then
Global $taskbarBlinkSec = $value
$taskbarBlinkSec = $taskbarBlinkSec * 1000 ;Convert to milliseconds
ElseIf $description = "Rows (Horizontal Cuts)" Then
LogProgram("Rows: " & $value)
ElseIf $description = "Columns (Vertical Cuts)" Then
LogProgram("Columns: " & $value)
LogProgram("Change %: " & $value)
Global $ssChangePercent = $value
LogProgram("Check Count: " & $value)
$lineNumber += 1
LogProgram
("=End Get Settings=" & @CRLF)
Func GetImageForDisplaySM
()
LogProgram("=GetImageForDisplaySM=")
Local $smhHBmp ;for GDI (secondary)
;Check image folder for count change
LogProgram("=GetImageForDisplaySM calling=")
CheckForImageChanges()
;Throw away value to prevent error with GetDimensions
$pmPicName = Random(1, $imageCount, 1)
;Secondary Monitor
;Images should go in order by file
LogProgram("Image Order:" & $smImageOrder)
If $smImageOrder = "Ordered" Then
;Counted Images default is 0
$countedImages += 1
;If the the counted images surpasses the number of images that are there, then reset the count
If $countedImages > $imageCount Then
$countedImages = 1
$smPicName = $countedImages
;Select a random image from the list
;Select a random image from the list
$smPicName = Random(1, $imageCount, 1)
;Select a random image, but do not show the same image twice
Else ;$smImageOrder = "Random No Repeat"
$reset = 0
$resetCount = 0
$imageShown[$x] = ""
$smPicName = Random(1, $imageCount, 1) ;Pick a random image
;Check if image has been shown
If $smPicName = $imageShown[$y] Then
$imageWasShown = 1
$imageWasShown = 0
$newPic = 0
$newPic = 1
$resetCount += 1
If $resetCount = $imageCount Then
$reset = 1
;Save image to shown image list
;Store name in next available empty slot
$imageShown[$x] = $smPicName ;Save image to shown image list
LogProgram("(SM) Selected Image SM: " & $imageList[$smPicName])
LogProgram("(SM - Throw Away)Selected Image PM: " & $imageList[$pmPicName])
;Get Dimensions of image
LogProgram("=GetImageForDisplaySM calling=")
GetDimensions($imageList[$smPicName], $imageList[$pmPicName])
$smImageHeight = $smpHeight
$smImageWidth = $smpWidth
;Turn them all into integers. (Fixes glitch that caused some images to skip resizing)
$smImageHeight = Int($smImageHeight)
$smImageWidth = Int($smImageWidth)
$smHeight = Int($smHeight)
LogProgram("Pre-Adjust")
LogProgram("smImageHeight: " & $smImageHeight)
LogProgram("smImageWidth: " & $smImageWidth)
LogProgram("smHeight: " & $smHeight)
LogProgram("smWidth: " & $smWidth)
;Adjust the image size
;-----------------------------------------------
;If the image is bigger than the screen, adjust it
If $smImageWidth > $smWidth = 1 Or $smImageHeight > $smHeight = 1 Then
;Get aspect ratio
$aspectRatioX = $smWidth / $smImageWidth ;Aspect ratio = monitor horizontal / image X
$aspectRatioY = $smHeight / $smImageHeight ;Aspect ratio = monitor vertical / image Y
LogProgram("aspectRatioX: " & $aspectRatioX)
LogProgram("aspectRatioY: " & $aspectRatioY)
If $aspectRatioX < $aspectRatioY Then
LogProgram("Image is Wide")
;New Height
$smImageHeight = $smWidth * ($smImageHeight / $smImageWidth)
$smImageWidth = $smWidth
LogProgram("New smImageHeight: " & $smImageHeight)
LogProgram("New smImageWidth: " & $smImageWidth)
LogProgram("Image is Tall")
;New Width
$smImageWidth = $smHeight * ($smImageWidth / $smImageHeight)
$smImageHeight = $smHeight
LogProgram("New smImageHeight: " & $smImageHeight)
LogProgram("New smImageWidth: " & $smImageWidth)
LogProgram("Image is smaller/same size as monitor")
;Calculate Center of monitor
;(Monitor size - image size) / 2
$smCenterX = ($smWidth - $smImageWidth) / 2
$smCenterY = ($smHeight - $smImageHeight) / 2
LogProgram("smCenterX: " & $smCenterX)
LogProgram("smCenterY: " & $smCenterY)
;Resize the image
LogProgram("Resize Image SM")
$smhHBmp = $pictureFolder & "\" & $imageList[$smPicName]
LogProgram
("=End GetImageForDisplaySM=" & @CRLF)
Func GetImageForDisplayPM
()
LogProgram("=GetImageForDisplayPM=")
Local $pmhHBmp ;for GDI (primary)
;Check image folder for count change
LogProgram("=GetImageForDisplayPM calling=")
CheckForImageChanges()
$pmChangeImage = 0
$pmPicName = Random(1, $imageCount, 1) ;Select a random image from the list for primary
LogProgram("(PM - Throw Away) Selected Image SM: " & $imageList[$smPicName])
LogProgram("(PM)Selected Image PM: " & $imageList[$pmPicName])
;Get Dimensions of image
LogProgram("=GetImageForDisplayPM calling=")
GetDimensions($imageList[$smPicName], $imageList[$pmPicName])
$pmImageHeight = $pmpHeight
$pmImageWidth = $pmpWidth
;Turn them all into integers. (Fixes glitch that caused some images to skip resizing)
$pmImageHeight = Int($pmImageHeight)
$pmImageWidth = Int($pmImageWidth)
LogProgram("Pre-Adjust")
LogProgram("pmImageHeight: " & $pmImageHeight)
LogProgram("pmImageWidth: " & $pmImageWidth)
;Adjust the image size
;-----------------------------------------------
;If the image is bigger than the screen, adjust it
;Get aspect ratio
$aspectRatioX = @DesktopWidth / $pmImageWidth ;Aspect ratio = monitor horizontal / image X
$aspectRatioY = @DesktopHeight / $pmImageHeight ;Aspect ratio = monitor vertical / image Y
LogProgram("aspectRatioX: " & $aspectRatioX)
LogProgram("aspectRatioY: " & $aspectRatioY)
If $aspectRatioX < $aspectRatioY Then
LogProgram("Image is Wide")
;New Height
$pmImageHeight = @DesktopWidth * ($pmImageHeight / $pmImageWidth)
LogProgram("New pmImageHeight: " & $pmImageHeight)
LogProgram("New pmImageWidth: " & $pmImageWidth)
LogProgram("Image is Tall")
;New Width
LogProgram("New pmImageHeight: " & $pmImageHeight)
LogProgram("New pmImageWidth: " & $pmImageWidth)
LogProgram("Image is smaller/same size as monitor")
;Calculate Center of monitor
;(Monitor size - image size) / 2
LogProgram("pmCenterX: " & $pmCenterX)
LogProgram("pmCenterY: " & $pmCenterY)
;Resize the image
LogProgram("Resize Image PM")
$pmhHBmp = $pictureFolder & "\" & $imageList[$pmPicName]
LogProgram
("=End GetImageForDisplayPM=" & @CRLF)
Func GetDimensions
($smPicName, $pmPicName)
LogProgram("=GetDimensions=")
Local $prop, $dArray, $fileSize, $imageDimensionsGDI
;Secondary Monitor
LogProgram("-Secondary Monitor-")
$path = $pictureFolder & "\" & $smPicName
LogProgram("Path: " & $path)
LogProgram("File Size: " & $fileSize)
LogProgram
("Registry Size: " & RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Size"))
;Save information to registry for faster access. Compare size of picture to verify changes to picture
If $fileSize <> RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Size") Then
LogProgram("File Sizes Do Not Match")
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Size", "REG_SZ", $fileSize)
;~ $prop = _GetFileProperty($path, "Dimensions")
;~ $dArray = StringSplit($prop, " x ")
;~ $smpWidth = Number(StringMid($dArray[1], 2))
;~ $smpHeight = Number($dArray[4])
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Width", "REG_SZ", $smpWidth)
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Height", "REG_SZ", $smpHeight)
LogProgram("File Sizes Match")
$smpWidth = RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Width")
$smpHeight = RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $smPicName & " Height")
LogProgram("smpWidth: " & $smpWidth)
LogProgram("smpHeight: " & $smpHeight)
;Primary Monitor
LogProgram("-Primary Monitor-")
$path = $pictureFolder & "\" & $pmPicName
LogProgram("Path: " & $path)
LogProgram("File Size: " & $fileSize)
LogProgram
("Registry Size: " & RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Size"))
;Save information to registry for faster access. Compare size of picture to verify changes to picture
If $fileSize <> RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Size") Then
LogProgram("File Sizes Do Not Match")
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Size", "REG_SZ", $fileSize)
;~ $prop = _GetFileProperty($path, "Dimensions")
;~ $dArray = StringSplit($prop, " x ")
;~ $pmpWidth = Number(StringMid($dArray[1], 2))
;~ $pmpHeight = Number($dArray[4])
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Width", "REG_SZ", $pmpWidth)
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Height", "REG_SZ", $pmpHeight)
LogProgram("File Sizes Match")
$pmpWidth = RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Width")
$pmpHeight = RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow\Pictures", $pmPicName & " Height")
LogProgram("pmpWidth: " & $pmpWidth)
LogProgram("pmpHeight: " & $pmpHeight)
LogProgram
("=End GetDimensions=" & @CRLF)
Func CheckForImageChanges
()
LogProgram("=CheckForImageChanges=")
LogProgram("Old Count: " & $imageCount)
LogProgram("New Count: " & $newCount[0])
If $newCount[0] <> $imageCount Then
LogProgram("New Images Found")
$imageCount = $imageList[0]
ReDim $imageShown[$imageCount + 1]
LogProgram("No New Images")
LogProgram
("=End CheckForImageChanges=" & @CRLF)
LogProgram("=CreateGUI=")
;Hidden GUI for fixing if FSS becomes the active window
LogProgram("FSS created")
;Parent, for window border hide effect
LogProgram("hide created")
;Actual GUI to be used
;Slideshow GUI
Global $smGUI = GUICreate("Fullscreen Slideshow", $smWidth, $smHeight, 0, 0, BitOR($WS_POPUP, $WS_EX_TOPMOST), -1, $GUIHide) ;GUI is the size of the secondary screen
LogProgram("Fullscreen Slideshow created")
LogProgram("smGUIhandle: " & $smGUIhandle)
LogProgram("Show smGUI")
;Screensaver GUI
LogProgram("Fullscreen Screensaver created")
LogProgram("pmGUIhandle: " & $pmGUIhandle)
LogProgram("Hide pmGUI")
LogProgram
("=End CreateGUI=" & @CRLF)
LogProgram("=MoveGUIWindow=")
LogProgram("SM Position: " & $smPosition)
;Move GUI according to location of secondary monitor
;$position = WinGetPos("Fullscreen Slideshow")
;If $position[0] <> (-1 * $smWidth) Or $position[1] <> $smHeight Then
WinMove("Fullscreen Slideshow", "", (-1 * $smWidth), 0, $smWidth, $smHeight)
;EndIf
;If $position[0] <> @DesktopWidth Or $position[1] <> $smHeight Then
;EndIf
LogProgram
("=End MoveGUIWindow=" & @CRLF)
LogProgram("=ShowImageSM=")
LogProgram("smImageChangeBlack: " & $smImageChangeBlack)
If $smImageChangeBlack = 0 Then
LogProgram("smhGraphics: " & $smhGraphics)
LogProgram("smPic: " & $smPic)
LogProgram("smCenterX: " & $smCenterX)
LogProgram("smCenterY: " & $smCenterY)
LogProgram
("=End ShowImageSM=" & @CRLF)
LogProgram("=ShowImagePM=")
LogProgram("pmhGraphics: " & $pmhGraphics)
LogProgram("pmPic: " & $pmPic)
LogProgram("pmCenterX: " & $pmCenterX)
LogProgram("pmCenterY: " & $pmCenterY)
LogProgram
("=End ShowImagePM=" & @CRLF)
LogProgram("=ShowTrayIcon=")
LogProgram("No")
LogProgram("Yes")
LogProgram
("=End ShowTrayIcon=" & @CRLF)
LogProgram("=StartWithWindows=")
If $startWithWindows = "Yes" Then
LogProgram("Yes")
If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Fullscreen Slideshow") = "" Then
RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Fullscreen Slideshow", "REG_SZ", '"' & @ScriptFullPath & '"')
LogProgram("No")
If RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Fullscreen Slideshow") <> "" Then
RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run", "Fullscreen Slideshow")
LogProgram
("=End StartWithWindows=" & @CRLF)
LogProgram("=AlwaysOnTop=")
;Always keep FSS on top of other windows
LogProgram
("=End AlwaysOnTop=" & @CRLF)
LogProgram("=LoseFocus=")
;If Fullscreen Slideshow becomes the active window, change to FSS
LogProgram
("=End LoseFocus=" & @CRLF)
Func CheckIfFSSshouldDisplay
()
LogProgram("=CheckIfFSSshouldDisplay=")
;Is selected window the Desktop?
LogProgram("Window Size: " & $winSize)
If $winSize = "" Then ;Prevents non-accessible glitch
$desktop = 0
$desktop = 1
$desktop = 0
LogProgram("Desktop Selected?: " & $desktop)
;Where is the active window
$activeWindowPosition = WinGetPos("[ACTIVE]")
LogProgram("Active Window Position: " & $activeWindowPosition[0])
If $activeWindowPosition[0] < 0 Then ;If Active Window is in monitor on left
$decided = 1
$returnValue = "Hide"
LogProgram("Active Window: On Left")
LogProgram("Return: " & $returnValue)
$returnValue = "Show"
LogProgram("Active Window: On Right")
LogProgram("Return: " & $returnValue)
Else ;$smPosition = "Right"
If $activeWindowPosition[0] > (@DesktopWidth - 1) Or _ ;If Active Window is in monitor on right
$decided = 1
$returnValue = "Hide"
LogProgram("Active Window: On Right")
LogProgram("Return: " & $returnValue)
$returnValue = "Show"
LogProgram("Active Window: On Left")
LogProgram("Return: " & $returnValue)
;Only check if undecided
;Where is the mouse located
$decided = 1
$returnValue = "Hide"
LogProgram("Mouse Position: On Left")
LogProgram("Return: " & $returnValue)
Else ;$smPosition = "Right"
;Bottom right corner of SM is activation spot
LogProgram("Mouse Activation Position")
LogProgram("Return: " & $returnValue)
$decided = 1
$returnValue = "Show"
$decided = 1
$returnValue = "Hide"
LogProgram("Mouse Position: On Right")
LogProgram("Return: " & $returnValue)
$decided = 1
$returnValue = "Hide"
LogProgram("Mouse Position: On Right")
LogProgram("Return: " & $returnValue)
;Is there a special Window that is active?
;Is VNC active?
LogProgram("Cursor Hider Active")
$decided = 1
;Temporary while VNC is in main window
;$returnValue = "Hide"
$returnValue = "Show"
LogProgram("Return: " & $returnValue)
;Is the Toggle set to hide?
;Is Screensaver Off?
LogProgram("forceFSSOn: " & $forceFSSOn)
If RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Mode") = "Hide" Then
;Get new image ready while hidden
CleanupPrevImageSM()
GetImageForDisplaySM()
ShowImageSM()
;Hide GUI
$decided = 1
$returnValue = "Hide"
LogProgram("Return: " & $returnValue)
$returnValue = "Show" ;Screensaver is active
;If no issues, then show
$returnValue = "Show"
LogProgram("Return: " & $returnValue)
LogProgram
("=End CheckIfFSSshouldDisplay=" & @CRLF)
EndFunc ;==>CheckIfFSSshouldDisplay
LogProgram("=ShowFSS=")
If $smActivationMode = "Inactive" Then ;Monitor not in use
Else ;$smActivationMode = "Timer" (Screensaver mode)
;Redraw GDI
LogProgram("=ShowFSS calling=")
ShowImageSM()
ShowImagePM()
LogProgram
("=End ShowFSS=" & @CRLF)
LogProgram("=HideFSS=")
$smRefreshImage = 1
$smSSMTimer = TimerInit() ;Reset Screensaver Timer
LogProgram
("=End HideFSS=" & @CRLF)
LogProgram("=ChangeImageSM=")
If RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Mode") <> "Monitor Off" Then
$smImageChangeBlack = 0
If $smChangeMethod = "Refresh" Then
$smRefreshImage = 0
GetImageForDisplaySM()
CleanupPrevImageSM()
ShowImageSM()
Else ;$smChangeMethod = "Timer"
$smImageChangeTimer = TimerInit() ;Reset Image Change Timer
GetImageForDisplaySM()
CleanupPrevImageSM()
ShowImageSM()
If $smImageChangeBlack = 0 Then
$smImageChangeBlack = 1
CleanupPrevImageSM()
LogProgram
("=End ChangeImageSM=" & @CRLF)
Func CleanupPrevImageSM
()
LogProgram("=CleanupPrevImageSM=")
;_GDIPlus_GraphicsDispose($smGdiPic)
;_GDIPlus_BitmapDispose($smPic)
LogProgram
("=End CleanupPrevImageSM=" & @CRLF)
Func CleanupPrevImagePM
()
LogProgram("=CleanupPrevImagePM=")
;_GDIPlus_GraphicsDispose($pmGdiPic)
;_GDIPlus_BitmapDispose($pmPic)
LogProgram
("=End CleanupPrevImagePM=" & @CRLF)
LogProgram("=DisplayTaskbar=")
;Hide/Show Taskbar
LogProgram("DisplayTaskbar calling")
ShowTaskBar()
If RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Blink Taskbar") = 0 Then HideTaskBar
()
If RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Blink Taskbar") = 0 Then HideTaskBar
()
LogProgram
("=End DisplayTaskbar=" & @CRLF)
LogProgram("=HideTaskBar=")
LogProgram
("=End HideTaskBar=" & @CRLF)
LogProgram("=ShowTaskbar=")
LogProgram
("=End ShowTaskbar=" & @CRLF)
LogProgram("=CloseProgram=")
If RegRead("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Close Program") = 1 Then
RegWrite("HKEY_CURRENT_USER\Software\Fullscreen Slideshow", "Close Program", "REG_SZ", 0)
LogProgram("CloseProgram calling")
CleanupPrevImageSM()
LogProgram("CloseProgram calling")
CleanupPrevImagePM()
LogProgram("GDI Dispose")
LogProgram("GDI Shutdown")
LogProgram("GUI Delete")
LogProgram
("Program Closed" & @CRLF)
LogProgram
("Program Not Closed" & @CRLF)
LogProgram("=End CloseProgram=")
Func ScreensaverOperations
()
LogProgram("=ScreensaverOperations=")
LogProgram("Screensaver Activated? " & $screensaverActivated)
LogProgram("Is Screensaver On? " & $screenSaverIsOn)
If $screensaverActivated = "Yes" Then
;Should Screensaver be activated?
LogProgram("Idle Time Seconds: " & ($idleTime / 1000))
LogProgram("Activation Seconds: " & $pmSSActivationSec)
If $idleTime > $pmSSActivationSec Then
LogProgram("=ScreensaverOperations calling=")
CaptureScreen() ;Take a screenshot of entire screen (divided into sections)
Sleep(1000) ;Give time for screenshots to load into hard drive
$checkCount = 1
$stop = 0
LogProgram("stop: " & $stop)
LogProgram("=ScreensaverOperations calling=")
$result = CompareScreen() ;Compare screenshots with current desktop
LogProgram("result: " & $result)
If $result = "Not Changed" Then
$checkCount += 1
If $checkCount > $ssCheckCount Then ;Check x times before giving up
$stop = 1
Sleep(2000) ;Wait 2 seconds before checking again
$stop = 1
;Activate screensaver
If $result = "Not Changed" Then
LogProgram("=ScreensaverOperations calling=")
ShowScreensaver()
Else ;If the screen has changed
LogProgram("=ScreensaverOperations calling=")
If CheckForDesktop
() = 1 Then ;If Desktop is taking over screen, turn on screensaver anyway
ShowScreensaver()
Else ;The screen is changing, but the desktop is not active
;Reset Timer (to prevent constant checking)
$screensaverActivated = 0
;Erase screenshots
LogProgram("=ScreensaverOperations calling=")
ScreensaverCleanUp()
EndIf ;If $screenSaverIsOn = 0
Else ;If $idleTime < $pmSSActivationSec
LogProgram("=ScreensaverOperations calling=")
HideScreensaver()
;===================
;Change Image?
$pmChangeImage = 1
LogProgram("=ScreensaverOperations calling=")
GetImageForDisplayPM()
CleanupPrevImagePM()
ShowImagePM()
$pmSSChangeTimer = TimerInit() ;Reset Image Change Timer
;===================
;If $screensaverActivated = "No" do nothing
LogProgram
("=End ScreensaverOperations=" & @CRLF)
LogProgram("=ShowScreensaver=")
$screenSaverIsOn = 1
$forceFSSOn = 1
$blinkTaskbar = 1
LogProgram
("=End ShowScreensaver=" & @CRLF)
LogProgram("=HideScreensaver=")
$screenSaverIsOn = 0
$forceFSSOn = 0
$blinkTaskbar = 0
LogProgram
("=End HideScreensaver=" & @CRLF)
LogProgram("=CaptureScreen=")
$currentShot = 1
LogProgram("ssRows: " & $ssRows)
LogProgram("ssColumns: " & $ssColumns)
LogProgram("currentShot: " & $currentShot)
;Vertical
LogProgram("currentYpos: " & $currentYpos)
;Horizontal
For $currentXpos = 0 To $ssColumns - 1 Step +1
LogProgram("currentXpos: " & $currentXpos)
($incrementX * $currentXpos), _
($incrementY * $currentYpos), _
($incrementX * ($currentXpos + 1)), _
$incrementY * ($currentYpos + 1), 0)
LogProgram("screensaver " & $currentShot & ".bmp saved")
LogProgram("screensaver " & $currentShot & ".bmp save error")
$captureError = 1
$currentShot += 1
LogProgram("currentShot: " & $currentShot)
;If there is a capture error, retry once
LogProgram("Attempt 2")
$captureError = 0
$currentShot = 1
LogProgram("ssRows: " & $ssRows)
LogProgram("ssColumns: " & $ssColumns)
LogProgram("currentShot: " & $currentShot)
;Vertical
LogProgram("currentYpos: " & $currentYpos)
;Horizontal
For $currentXpos = 0 To $ssColumns - 1 Step +1
LogProgram("currentXpos: " & $currentXpos)
($incrementX * $currentXpos), _
($incrementY * $currentYpos), _
($incrementX * ($currentXpos + 1)), _
$incrementY * ($currentYpos + 1), 0)
LogProgram("screensaver " & $currentShot & ".bmp saved")
LogProgram("screensaver " & $currentShot & ".bmp save error")
$captureError = 1
$currentShot += 1
LogProgram("currentShot: " & $currentShot)
LogProgram
("=End CaptureScreen=" & @CRLF)
LogProgram("=CompareScreen=")
Local $resistance = $changeQuadrant
LogProgram("changeQuadrant: " & $resistance)
$currentShot = 1
LogProgram("currentShot: " & $currentShot)
LogProgram("currentYpos: " & $currentYpos)
For $currentXpos = 0 To $ssColumns - 1 Step +1
LogProgram("currentXpos: " & $currentXpos)
If _ImageSearchArea
(@WorkingDir & "\Screensaver\screensaver " & $currentShot & ".bmp", 1, ($incrementX * $currentXpos), ($incrementY * $currentYpos), ($incrementX * ($currentXpos + 1)), ($incrementY * ($currentYpos + 1)), $x, $y, 0) = 1 Then
LogProgram("Image Did Not Change")
LogProgram("Image Changed")
$resistance -= 1
$currentShot += 1
LogProgram("currentShot: " & $currentShot)
LogProgram("resistance: " & $resistance)
LogProgram("Return: Changed")
LogProgram("Return: Changed")
LogProgram("Return: Not Changed")
$captureError = 0
LogProgram("Return: Skip")
LogProgram
("=End CompareScreen=" & @CRLF)
LogProgram("=CheckForDesktop=")
Local $x, $y, $desktopFound
LogProgram("desktopFound: " & $desktopFound)
LogProgram
("=End CheckForDesktop=" & @CRLF)
Func ScreensaverCleanUp
()
LogProgram("=ScreensaverCleanup=")
Local $picCount = $ssRows * $ssColumns
LogProgram("screensaver " & $file & ".bmp delete error")
LogProgram("screensaver " & $file & ".bmp deleted")
LogProgram
("=End ScreensaverCleanup=" & @CRLF)
Func LogProgram
($sentence)