Sign in to follow this  
Followers 0
spudw2k

Pixel Fixer

4 posts in this topic

#1 ·  Posted (edited)

Here a junker script I threw together to flash colors on the screen to fix dead or stuck pixels.

edit: Optimized with Arrays

Global $varColors[3]
Global $varBlendRates[3]
Global $varBlendDirections[3]
Global $varColor
$varBlendMode = 0

$gui = GUICreate("PixelFixer",120,140,-1,-1,262144)
$mnu = GUICtrlCreateMenu("&File")
    $mode = GUICtrlCreateMenu("&Mode",$mnu)
        $blendmode = GUICtrlCreateMenuItem("&Blend",$mode,0,1)
            GUICtrlSetState(-1,1)
        $randmode = GUICtrlCreateMenuItem("R&andom",$mode,1,1)
    $speed = GUICtrlCreateMenu("&Rate",$mnu)
        $fast = GUICtrlCreateMenuItem("&Fast",$speed,0,1)
            GUICtrlSetState(-1,1)
        $slow = GUICtrlCreateMenuItem("&Slow",$speed,1,1)
GUISetState()

$timer = TimerInit()

HotKeySet("{esc}","ExitAll")

While 1
    $msg = GUIGetMsg()
    If $msg = $randmode Then $varBlendMode = 0
    If $msg = -3 Then ExitAll()
    PaintWin()
WEnd

Exit

Func PaintWin()
    If GuiCtrlRead($slow) = 65 Then
        $varSpeed = 500
    Else
        $varSpeed = 50
    EndIf
    If GuiCtrlRead($randmode) = 65 Then
        PaintRand()
        $varColor = "0x"
        For $i = 0 to 2
            $varColor &= $varColors[$i]
        Next
    Else
        PaintBlend()
        $varColor = "0x"
        For $i = 0 to 2
            $varColor &= Hex($varColors[$i],2)
        Next
    EndIf
    GUISetBkColor($varColor)
    sleep($varSpeed)
EndFunc

Func PaintRand()
    For $i = 0 to 2
        $varColors[$i] = Hex(Random(0,255,1),2)
    Next
EndFunc

Func PaintBlend()
    If TimerDiff($timer) > 5000 Then
        $timer = TimerInit()
        BlendRates()
    EndIf
    If $varBlendMode = 0 Then 
        PaintRand()
        BlendRates()
        $varBlendMode = 1
    EndIf
    For $i = 0 to 2
        BlendColors($varColors[$i],$varBlendRates[$i],$varBlendDirections[$i])
    Next
EndFunc

Func BlendRates()
    For $i = 0 to 2
        $varBlendDirections[$i] = Random(0,1,1)
        $varBlendRates[$i] = Random(10,20,1)
    Next
    
EndFunc

Func BlendColors(byref $varThisColor,$varBlendRate,byref $varBlendDir)
    If $varBlendDir = 1 Then
        $varThisColor += $varBlendRate
    Else
        $varThisColor -= $varBlendRate
    EndIf
    If $varThisColor > 255 Then
        $varThisColor -= $varBlendRate
        $varBlendDir = 0
    EndIf
        If $varThisColor < 0 Then
        $varThisColor += $varBlendRate
        $varBlendDir = 1
    EndIf
EndFunc

Func ExitAll()
    Exit
EndFunc
Edited by spudw2k

Share this post


Link to post
Share on other sites



#3 ·  Posted (edited)

Made another change to change blend rates every 5 seconds so it's not the same blend pattern.

I'm surprised how little CPU is used for the bakground color change of the GUI.

Edited by spudw2k

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Just a fun clock I made based on the code above.

#NoTrayIcon

Global $varColors[3]
Global $varBlendRates[3]
Global $varBlendDirections[3]
Global $varColor
Global $timer
Global $hover = -1
Global $alpha = 220
Global $active = 1
$varSpeed = 60
$blendtimer = TimerInit()
$updatetimer = TimerInit()
$timer = TimerInit()

$dll = DllOpen("user32.dll")

HotKeySet("{esc}","_Exit")

$gui = GUICreate("ColorfulClock",200,70,0,0,0x80880000,-1,WinGetHandle("Program Manager"))
$time = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC,0,0,200,70,513)
    GUISetOnEvent(-1,"_DragWin")
    GUICtrlSetFont(-1,34)

PaintRand()
BlendRates()

WinSetTrans("ColorfulClock","",$alpha)
WinSetOnTop("ColorfulClock","",1)
GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case -3
            ExitLoop
    EndSwitch
    If $hover and $active and _IsPressed(1,$dll) Then _DragWin()
    PaintWin()
    If TimerDiff($timer) >= 3500 Then 
        _CheckHover()
    EndIf
    If $hover = False Then 
        _FadeClock(-5)
    ElseIf $hover = True Then
        _FadeClock(30)
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc

Func _IsPressed($sHexKey, $vDLL = 'user32.dll')
    Local $a_R = DllCall($vDLL, "int", "GetAsyncKeyState", "int", '0x' & $sHexKey)
    If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return 1
    Return 0
EndFunc

Func _DragWin()
    _CheckHover()
    If Not $hover Then Return 0
    $mousepos1 = MouseGetPos()
    While _IsPressed(1,$dll)
        $y = 0
        $x = 0
        $mousepos2 = MouseGetPos()
        $x = $mousepos2[0]-$mousepos1[0]
        $y = $mousepos2[1]-$mousepos1[1]
        $mousepos1 = MouseGetPos()
        If $x <> 0 or $y <> 0 Then
            $winpos = WinGetPos("ColorfulClock")
            
            $winx = $winpos[0] + $x
            If $winx < 0 then $winx = 0
            If $winx > @DesktopWidth - $winpos[2] then $winx = @DesktopWidth - $winpos[2]

            $winy = $winpos[1] + $y
            If $winy <  0 then $winy = 0
            If $winy > @DesktopHeight - $winpos[3] then $winy = @DesktopHeight - $winpos[3]
            
            WinMove("ColorfulClock","",$winx,$winy)
        EndIf
        PaintWin()
    Wend
EndFunc

Func PaintBlend()
    If TimerDiff($blendtimer) > 10000 Then
        $blendtimer = TimerInit()
        BlendRates()
    EndIf
    For $i = 0 to 2
        BlendColors($varColors[$i],$varBlendRates[$i],$varBlendDirections[$i])
    Next
EndFunc

Func PaintRand()
    SRandom(Random(1,200))
    For $i = 0 to 2
        $varColors[$i] = Hex(Random(0,255,1),2)
    Next
EndFunc

Func BlendRates()
    For $i = 0 to 2
        $varBlendDirections[$i] = Random(0,1,1)
        $varBlendRates[$i] = Random(3,10,1)
    Next
EndFunc

Func BlendColors(byref $varThisColor,$varBlendRate,byref $varBlendDir)
    If $varBlendDir = 1 Then
        $varThisColor += $varBlendRate
    Else
        $varThisColor -= $varBlendRate
    EndIf
    If $varThisColor > 255 Then
        $varThisColor -= $varBlendRate
        $varBlendDir = 0
    EndIf
        If $varThisColor < 0 Then
        $varThisColor += $varBlendRate
        $varBlendDir = 1
    EndIf
EndFunc

Func PaintWin()
    If TimerDiff($updatetimer) > 999 Then
        $updatetimer = TimerInit()
        GUICtrlSetData($time,@Hour & ":" & @Min & ":" & @SEC)
    EndIf
    PaintBlend()
    $varColor = ""
    For $i = 0 to 2
       $varColor &= Hex($varColors[$i],2)
    Next
    $val = Hex(Execute(Dec("FFFFFF") & "-" & Dec($varColor) ))
    GUICtrlSetColor($time,"0x" & $val)
    GUISetBkColor("0x" & $varColor)
    sleep($varSpeed)
EndFunc

Func _CheckHover()
    $winpos = WinGetPos("ColorfulClock")
    $mousepos = MouseGetPos()
    If ($mousepos[0] >= $winpos[0] And $mousepos[0] <= $winpos[0] + $winpos[2]) And ($mousepos[1] >= $winpos[1] And $mousepos[1] <= $winpos[1] + $winpos[3]) Then 
        $timer = TimerInit()
        $hover = True
        $active = True
    Else 
        $hover = False
        $active = False
    EndIf
EndFunc

Func _FadeClock($direction)
    $alpha += $direction
    If $alpha >= 201 Then 
        $alpha = 200
    EndIf
    If $alpha <= 49 Then 
        $alpha = 50
    EndIf
    WinSetTrans("ColorfulClock","",$alpha)
EndFunc
Edited by spudw2k

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0