Ich hab mal mit der gdi32.dll herumgespielt und das ist dabei herausgekommen.
Der Code ist schon etwas ölter, läuft aber noch!
random_scr.au3
#NoTrayIcon
_scrnsav (-2)
Func _scrnsav ($type = 0, $del=True)
$VirtualDesktopWidth = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 78);sm_virtualwidth
$VirtualDesktopHeight = DllCall("user32.dll", "int", "GetSystemMetrics", "int", 79);sm_virtualheight
$dc = DllCall ("user32.dll", "int", "GetDC", "hwnd", "")
If $type = -1 Then
$type = Random (1, 8, 1)
EndIf
#made by tobi_girst (http://www.autoit.de)
Switch $type
Case 1
For $x = 0 To $VirtualDesktopWidth [0]
For $y = 0 To $VirtualDesktopHeight [0]
$color = Random (0x000000, 0xFFFFFF)
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 2
For $x = 0 To $VirtualDesktopWidth [0]
$color = Random (0x000000, 0xFFFFFF)
For $y = 0 To $VirtualDesktopHeight [0]
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 3
For $y = 0 To $VirtualDesktopHeight [0]
For $x = 0 To $VirtualDesktopWidth [0]
$color = Random (0x000000, 0xFFFFFF)
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 4
For $y = 0 To $VirtualDesktopHeight [0]
$color = Random (0x000000, 0xFFFFFF)
For $x = 0 To $VirtualDesktopWidth [0]
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 5
For $x = $VirtualDesktopWidth [0] To 0 Step -1
For $y = $VirtualDesktopHeight [0] To 0 Step -1
$color = Random (0x000000, 0xFFFFFF)
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 6
For $x = $VirtualDesktopWidth [0] To 0 Step -1
$color = Random (0x000000, 0xFFFFFF)
For $y = $VirtualDesktopHeight [0] To 0 Step -1
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 7
For $y = $VirtualDesktopHeight [0] To 0 Step -1
For $x = $VirtualDesktopWidth [0] To 0 Step -1
$color = Random (0x000000, 0xFFFFFF)
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 8
For $y = $VirtualDesktopHeight [0] To 0 Step -1
$color = Random (0x000000, 0xFFFFFF)
For $x = $VirtualDesktopWidth [0] To 0 Step -1
DllCall ("gdi32.dll", "long", "SetPixel", "long", $dc[0], "long", $x, "long", $y, "long", $color)
Next
_test ()
Next
Case 0
_scrnsav(1)
_scrnsav(2)
_scrnsav(3)
_scrnsav(4)
_scrnsav(5)
_scrnsav(6)
_scrnsav(7)
_scrnsav(8)
Case -2
_scrnsav(1)
_scrnsav(4)
_scrnsav(5)
_scrnsav(8)
_scrnsav(3)
_scrnsav(2)
_scrnsav(7)
_scrnsav(6)
EndSwitch
EndFunc
Func _IdleTicks() ;von UEZ (http://www.autoit.de)
Local $aTSB = DllCall("kernel32.dll", "long", "GetTickCount")
Local $ticksSinceBoot = $aTSB[0]
Local $struct = DllStructCreate("uint;dword")
DllStructSetData($struct, 1, DllStructGetSize($struct))
DllCall("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr($struct))
Local $ticksSinceIdle = DllStructGetData($struct, 2)
Return ($ticksSinceBoot - $ticksSinceIdle)
EndFunc ;==>_IdleTicks
Func _test ()
Global $last
$new = _IdleTicks()
If $new < $last Then
Exit
EndIf
$last = $new
EndFunc
Func OnAutoItStart ();$del = True)
WinMinimizeAll ()
EndFunc
Func OnAutoItExit ();$del = True)
WinMinimizeAllUndo ()
EndFunc
Edit:/ Ach ja: Was mir besonders gut gefällt, ist dass ich das Script auch mit Wine unter Ubuntu nutzen kann!
mfg tobi_girst