Random Dots / Random Lines

  • 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
    [autoit]

    #NoTrayIcon
    _scrnsav (-2)

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _test ()
    Global $last
    $new = _IdleTicks()
    If $new < $last Then
    Exit
    EndIf
    $last = $new
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItStart ();$del = True)
    WinMinimizeAll ()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit ();$del = True)
    WinMinimizeAllUndo ()
    EndFunc

    [/autoit]

    Edit:/ Ach ja: Was mir besonders gut gefällt, ist dass ich das Script auch mit Wine unter Ubuntu nutzen kann!
    mfg tobi_girst

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

  • ok auch wenns wohl nicht wichtig ist aber is mir halt aufgefallen...
    vlt solltest du da in betracht ziehen die bemalten pixel wieder zu löschen wenn sich das programm beendet ^^"
    so das das nicht bunt bleibt bis man den desktop aktualisiert... oder war das mit absicht?

    ich weis... ich muss überall meinen senf dazu geben xD
    bisauf das die pixel bunt bleiben :D is das supi :D

  • Der Bildschirm wird vorher Minimiert

    [autoit]

    Func OnAutoItStart ();$del = True)
    WinMinimizeAll ()
    EndFunc

    [/autoit]


    danach wieder angezeigt

    [autoit]

    Func OnAutoItExit ();$del = True)
    WinMinimizeAllUndo ()
    EndFunc

    [/autoit]


    Eigentlich sollte es damit doch die Pixel löschen.
    Bin (wie immer) am Ubuntu und kanns nicht testen. Starte VM und teste gleich!
    mfg tobi_girst

    -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

    Habs gefixt! Zwar nicht professionell, aber es geht!

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    _scrnsav (-2)

    [/autoit] [autoit][/autoit] [autoit]

    Func _scrnsav ($type = 0);, $del = True, $progs = 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

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    Func _test ()
    Global $last
    $new = _IdleTicks()
    If $new < $last Then
    Exit
    EndIf
    $last = $new
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit ()
    GUICreate ("", @desktopwidth, @desktopheight, 0, 0, 0x80000000, 0x00000080)
    GUISetState ()
    EndFunc

    [/autoit]

    MfG. tobi_girst

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »tobi_girst« (Morgen, 25:63)

    Einmal editiert, zuletzt von tobi_girst (21. Dezember 2009 um 17:28)