Hallo Forum,
nun habe ich es endlich geschafft das Script auch mit Bildschirmschohnertool zum laufen zu bringen, nun hätte ich noch eine Frage an euch, und zwar:
Im Bildschirmschohnereinstellungsfenster, gibt es noch einen kleinen Bildschirm für die kleine Vorschau des Screensavers, dieser ist bei mir leider noch Schwarz, also es wird nichts angezeigt, könnt ihr mir helfen, dass in diesem die Vorschau dess Screensavers auch angezeigt wird??
Hier das komplette Script:
Spoiler anzeigen
#include <GUIConstants.au3>
#include <Date.au3>
#include <EditConstants.au3>
#include <GDIPlus.au3>
#include <Misc.au3>
#include <SliderConstants.au3>
#include <Timers.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WinAPI.au3>
#include <GuiImageList.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; -Authors: name22 (http://www.autoit.de), Andy (http://www.autoit.de), Facemix (http://www.autoit.de)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#region WINDOWSTOOL
_Singleton(@AutoItExe)
Global $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
[/autoit] [autoit][/autoit] [autoit]Global Const $app_name = "GDI+ Countdown-Screensaver by (C) Clemens 2012"
Global Const $ver = "v1.0 build 2012-11-24"
Global $hGUI, $iW, $iH, $GUI_H, $GUI_W, $GUI_X, $GUI_Y, $r, $show_FPS = 0
Global $maxStars = 150, $size = 1
Global $parent_pid, $aChildProcess
Global Const $hFullScreen = WinGetHandle("Program Manager")
Global Const $aFullScreen = WinGetPos($hFullScreen)
Global $main_screen_x = Abs($aFullScreen[0])
Global Const $ini_file = @ScriptDir & "\GDI+ Countdown-Screensaver.ini"
Global $hWnd
Global $cmdparam = "/s"
If $CmdLine[0] Then $cmdparam = StringLeft($CmdLine[1], 2)
Switch $cmdparam
Case "/s"
$iW = @DesktopWidth
$iH = @DesktopHeight
$GUI_X = $aFullScreen[0]
$GUI_Y = $aFullScreen[1]
$GUI_W = $aFullScreen[2]
$GUI_H = $aFullScreen[3]
$r = (($iW + $iH) / 2) / 0x300
$hGUI = GUICreate($app_name, $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP, $WS_EX_TOPMOST)
Case "/c"
Opt("GUIOnEventMode", 0)
MsgBox(0,"Einstellungen","Die Einstellungen sind derzeit noch nicht vorhanden! - made by (C) Clemens")
Exit
Case "/p"
$iW = 152
$iH = 112
$GUI_X = 0
$GUI_Y = 0
$GUI_W = $iW
$GUI_H = $iH
$main_screen_x = 0
$r = (($iW + $iH) / 2) / 0x30
$show_FPS = False
;$maxStars = 30
$size = 1
;$hWnd = GUICreate("GDI+ Countdown-Screensaver by (C) Clemens", $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP)
_WinAPI_SetParent($hWnd, $CmdLine[2])
Exit
EndSwitch
#endregion WINDOWSTOOL
; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[/autoit] [autoit][/autoit] [autoit]#region BILDSCHIRMSCHOHNER
Opt("GUIOnEventMode", 1)
Global Const $nTau = ACos(-1) * 2
Global $vNTdll = DllOpen("ntdll.dll")
Global $tPrecSleep = DllStructCreate("int64 time;")
Global $pPrecSleep = DllStructGetPtr($tPrecSleep)
#region SETTINGS
[/autoit] [autoit][/autoit] [autoit]Global $iWidth = @DesktopWidth
Global $iHeight = @DesktopHeight
Global $nFPS = 60
Global $nStepSpeed = 1
[/autoit] [autoit][/autoit] [autoit]#region COLORS
Global $iARGB_BG = 0xFF505050
Global $iARGB_Snow = 0xFFFFFFFF
Global $iARGB_TextFill = 0xFF0000FF
Global $iARGB_TextFill2 = 0xFFFF0000
Global $iARGB_TextFill3 = 0xFF0000FF
Global $iARGB_TextFill4 = 0xFF353535
Global $iARGB_TextBorder = 0xFFA00000
#endregion COLORS
#region SNOWFLAKES
Global $iFlakeCount = 500
Global $iMinFallingSpeed = 20, $iMaxFallingSpeed = 50
Global $iMinOscillations = 2, $iMaxOscillations = 5
Global $iMinOscillationDist = 10, $iMaxOscillationDist = 50
Global $iMinRadius = 1, $iMaxRadius = 3
#endregion SNOWFLAKES
#region SNOWBLAST
Global $iBlastRadius = 200
Global $iBlastAccell = 300
Global $nAirFriction = 0.95
#endregion SNOWBLAST
#endregion SETTINGS
[/autoit] [autoit][/autoit] [autoit]#region Global Variables
Global $aFlakes[$iFlakeCount + 1][8] = [[$iFlakeCount]]
Global $hDC_Window, $hDC_Bitmap, $hBitmap, $hGraphics, $hOldObj, $hBrush_Snow, $hBrush_TextFill, $hPen_Border
Global $hMatrix, $tLayout, $hFormat, $hFamily, $hPath, $nScale, $nStep = 0, $iM, $iS, $iD, $sText, $sTextOld
Global $nSleepTime = 1000 / $nFPS
#endregion Global Variables
#region Generate Snow
For $i = 1 To $aFlakes[0][0]
$aFlakes[$i][0] = Random(10, $iWidth - 10, 1)
$aFlakes[$i][1] = Random(-$iHeight, 0, 1)
$aFlakes[$i][2] = 0
$aFlakes[$i][3] = 0
$aFlakes[$i][4] = Random($iMinRadius, $iMaxRadius, 1)
$aFlakes[$i][5] = Random($iMinFallingSpeed, $iMaxFallingSpeed)
$aFlakes[$i][6] = Random($iMinOscillations, $iMaxOscillations, 1)
$aFlakes[$i][7] = Random($iMinOscillationDist, $iMaxOscillationDist) * (-1) ^ Random(1, 2, 1)
Next
#endregion Generate Snow
$hWnd = GUICreate("Screensaver", $iWidth, $iHeight, 0, 0, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_EX_TOPMOST))
GUISetState()
#region Initialize GFX Resources
$hDC_Window = _WinAPI_GetDC($hWnd)
$hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
$hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
$hOldObj = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)
_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]$hGraphics = _GDIPlus_GraphicsCreateFromHDC($hDC_Bitmap)
_GDIPlus_GraphicsSetClipRect($hGraphics, 0, 0, $iWidth, $iHeight)
_GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
$hBrush_Snow = _GDIPlus_BrushCreateSolid($iARGB_Snow)
$hBrush_TextFill = _GDIPlus_BrushCreateSolid($iARGB_TextFill)
$hPen_Border = _GDIPlus_PenCreate($iARGB_TextBorder, 3)
DllCall($ghGDIPDll, "uint", "GdipSetPenLineJoin", "hwnd", $hPen_Border, "int", 2)
$hMatrix = _GDIPlus_MatrixCreate()
$tLayout = _GDIPlus_RectFCreate(0, 0, 0, 0)
$hFormat = _GDIPlus_StringFormatCreate()
$hFamily = _GDIPlus_FontFamilyCreate("Arial")
$hPath = _CreatePath("88 - 88:88:88")
_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
_Redraw()
#endregion Initialize GFX Resources
#region Register Events
OnAutoItExitRegister("_Shutdown")
GUIRegisterMsg($WM_PAINT, "_Redraw")
GUISetOnEvent($GUI_EVENT_CLOSE, "_Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_Click")
AdlibRegister("_UpdateTime", 100)
#endregion Register Events
$nT_Sleep = TimerInit() + $nSleepTime
[/autoit] [autoit][/autoit] [autoit]While True
DllStructSetData($tPrecSleep, "time", -10000 * ($nSleepTime - TimerDiff($nT_Sleep)))
DllCall($vNTdll, "dword", "ZwDelayExecution", "int", 0, "ptr", $pPrecSleep)
$nFrameTime = TimerDiff($nT_Sleep)
$nT_Sleep = TimerInit()
$nFPS_Cur = 1000 / $nFrameTime
[/autoit] [autoit][/autoit] [autoit]$nStep += $nStepSpeed / $nFPS_Cur
$nScale = Abs(Sin($nStep))
_GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
[/autoit] [autoit][/autoit] [autoit]DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGraphics, "float", -$iWidth / 2, "float", -$iHeight / 2, "int", False)
DllCall($ghGDIPDll, "uint", "GdipScaleWorldTransform", "hwnd", $hGraphics, "float", $nScale, "float", $nScale, "int", True)
DllCall($ghGDIPDll, "uint", "GdipTranslateWorldTransform", "hwnd", $hGraphics, "float", $iWidth / 2, "float", $iHeight / 2, "int", True)
DllCall($ghGDIPDll, "uint", "GdipDrawPath", "hwnd", $hGraphics, "hwnd", $hPen_Border, "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipFillPath", "hwnd", $hGraphics, "hwnd", $hBrush_TextFill, "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipResetWorldTransform", "hwnd", $hGraphics)
[/autoit] [autoit][/autoit] [autoit]For $i = 1 To $aFlakes[0][0]
$aFlakes[$i][1] += ($aFlakes[$i][5] + $aFlakes[$i][3]) / $nFPS_Cur
$aFlakes[$i][0] += (Sin($aFlakes[$i][1] / $iHeight * $nTau * $aFlakes[$i][6]) * $aFlakes[$i][7] + $aFlakes[$i][2]) / $nFPS_Cur
$aFlakes[$i][2] *= $nAirFriction
$aFlakes[$i][3] *= $nAirFriction
If $aFlakes[$i][1] > $iHeight Or $aFlakes[$i][0] < -20 Or $aFlakes[$i][0] > $iWidth + 20 Then
$aFlakes[$i][0] = Random(10, $iWidth - 10, 1)
$aFlakes[$i][1] = Random(-$iHeight, 0, 1)
$aFlakes[$i][2] = 0
$aFlakes[$i][3] = 0
$aFlakes[$i][4] = Random($iMinRadius, $iMaxRadius, 1)
$aFlakes[$i][5] = Random($iMinFallingSpeed, $iMaxFallingSpeed)
$aFlakes[$i][6] = Random($iMinOscillations, $iMaxOscillations, 1)
$aFlakes[$i][7] = Random($iMinOscillationDist, $iMaxOscillationDist)
EndIf
_GDIPlus_GraphicsFillEllipse($hGraphics, $aFlakes[$i][0] - $aFlakes[$i][4] / 2, $aFlakes[$i][1] - $aFlakes[$i][4] / 2, $aFlakes[$i][4] * 2, $aFlakes[$i][4] * 2, $hBrush_Snow)
Next
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
WEnd
Func _UpdateTime()
_TicksToTime(_DateDiff('s', _NowCalc(), "2013/01/01 00:00:00") * 1000, $iH, $iM, $iS)
If $iH > 23 Then
$iD = StringFormat("%02i", $iH / 24); volle Tage
$iH = $iH - ($iD * 24); volle Tage abziehen
Else
$iD = 0
EndIf
If $sText = "00 - 00:00:00" Then
AdlibUnRegister("_UpdateTime")
Feuerwerk() ; Funktion Feuerwerk soll dann ausgeführt werden
Else
$sText = StringFormat("%02i - %02i:%02i:%02i", $iD, $iH, $iM, $iS)
EndIf
If $sText <> $sTextOld Then
$sTextOld = $sText
DllCall($ghGDIPDll, "uint", "GdipResetPath", "hwnd", $hPath)
DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
EndIf
EndFunc
Func _Click()
Local $tMousePos = _WinAPI_GetMousePos(True, $hWnd)
For $i = 1 To $aFlakes[0][0]
$iX_Dist = ($aFlakes[$i][0] - $aFlakes[$i][4]) - DllStructGetData($tMousePos, "X")
$iY_Dist = ($aFlakes[$i][1] - $aFlakes[$i][4]) - DllStructGetData($tMousePos, "Y")
$iDist = Sqrt($iX_Dist ^ 2 + $iY_Dist ^ 2)
If $iDist = 0 Then ContinueLoop
If $iDist < $iBlastRadius Then
$aFlakes[$i][2] = (1 - $iDist / $iBlastRadius) * ($iX_Dist / $iDist) * $iBlastAccell
$aFlakes[$i][3] = (1 - $iDist / $iBlastRadius) * ($iY_Dist / $iDist) * $iBlastAccell
EndIf
Next
EndFunc ;==>_Click
Func _Redraw()
_WinAPI_BitBlt($hDC_Window, 0, 0, $iWidth, $iHeight, $hDC_Bitmap, 0, 0, $SRCCOPY)
EndFunc ;==>_Redraw
Func _Close()
Exit
EndFunc ;==>_Close
Func _Shutdown()
_WinAPI_SelectObject($hDC_Bitmap, $hOldObj)
_WinAPI_ReleaseDC($hWnd, $hDC_Window)
_WinAPI_DeleteDC($hDC_Bitmap)
_WinAPI_DeleteObject($hBitmap)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BrushDispose($hBrush_Snow)
_GDIPlus_PenDispose($hPen_Border)
_GDIPlus_MatrixDispose($hMatrix)
_GDIPlus_StringFormatDispose($hFormat)
_GDIPlus_FontFamilyDispose($hFamily)
DllCall($ghGDIPDll, "uint", "GdipDeletePath", "hwnd", $hPath)
_GDIPlus_Shutdown()
DllClose($vNTdll)
EndFunc ;==>_Shutdown
Func _CreatePath($sText)
[/autoit] [autoit][/autoit] [autoit]Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)
[/autoit] [autoit][/autoit] [autoit]Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreatePath", "int", 0, "int*", 0)
If @error Or Not IsArray($aResult) Then Return SetError(1, 1, False)
Local $hPath = $aResult[2]
DllCall($ghGDIPDll, "uint", "GdipAddPathString", "hwnd", $hPath, "wstr", $sText, "int", -1, "hwnd", $hFamily, "int", 1, "float", 100, "ptr", DllStructGetPtr($tLayout), "hwnd", $hFormat)
DllCall($ghGDIPDll, "uint", "GdipGetPathWorldBounds", "hwnd", $hPath, "ptr", DllStructGetPtr($tBounds), "hwnd", 0, "hwnd", 0)
_GDIPlus_MatrixTranslate($hMatrix, -DllStructGetData($tBounds, "X"), -DllStructGetData($tBounds, "Y"))
_GDIPlus_MatrixScale($hMatrix, $iWidth / DllStructGetData($tBounds, "Width"), $iHeight / DllStructGetData($tBounds, "Height"), True)
DllCall($ghGDIPDll, "uint", "GdipTransformPath", "hwnd", $hPath, "hwnd", $hMatrix)
Return $hPath
EndFunc ;==>_CreatePath
#region FEUERWERK
[/autoit] [autoit][/autoit] [autoit]Func Feuerwerk()
Local $aDraw
Local $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
Global $iWidth2 = @DesktopWidth, $iHeight2 = @DesktopHeight, $aStart[$iCount][4] = [[Random(0, $iWidth2, 0), Random(0, $iHeight2, 0), 0, _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))],[Random(0, $iWidth2, 0), Random(0, $iHeight2, 0), 0, _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))]], $iSleeping = 0
For $i = 0 To UBound($aStart) - 1
$aStart[$i][0] = Random(0, $iWidth2, 0)
$aStart[$i][1] = Random(0, $iHeight2, 0)
$aStart[$i][2] = $iExplosion
$aStart[$i][3] = _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))
Next
While True
_GDIPlus_GraphicsClear($hGraphics, $iBack)
If $iSleeping = 0 Then
For $j = 0 To UBound($aStart) - 1
For $i = 0 To 35
$aDraw = Dreieck($i * 10, $aStart[$j][2] - $iExplosion)
_GDIPlus_GraphicsDrawRect($hGraphics, $aStart[$j][0] + Round($aDraw[0], 0), $aStart[$j][1] + Round($aDraw[1], 0), 2, 2, $aStart[$j][3])
Next
$aStart[$j][2] += $iExplosionGround + Ceiling(10 * $iExplosion / ($aStart[$j][2]))
If $aStart[$j][2] > $iRadius Then
$iSleeping = $iSleep
$aStart[$j][0] = Random(0, $iWidth2, 0)
$aStart[$j][1] = Random(0, $iHeight2, 0)
$aStart[$j][2] = $iExplosion
_GDIPlus_PenDispose($aStart[$j][3])
$aStart[$j][3] = _GDIPlus_PenCreate(Random(0xFF000000, 0xFFFFFFFF, 0))
EndIf
Next
Else
$iSleeping -= 1
EndIf
_WinAPI_RedrawWindow($hWnd, 0, 0, 2)
WEnd
EndFunc ;==>Feuerwerk
Func Dreieck($iWinkel, $iLaenge)
Local $iDeg = 0.0174532925199433, $aRet[2]
$aRet[0] = Sin($iWinkel * $iDeg) * $iLaenge
$aRet[1] = Cos($iWinkel * $iDeg) * $iLaenge
Return $aRet
EndFunc ;==>Dreieck
#endregion FEUERWERK
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; #FUNCTION# ====================================================================================================================
; Name...........: _GDIPlus_GraphicsSetClipRect
; Description ...: Updates the clipping region of a Graphics object to a region that is the combination of itself and a rectangle
; Syntax.........: _GDIPlus_GraphicsSetClipRect($hGraphics, $nX, $nY, $nWidth, $nHeight[, $iCombineMode = 0])
; Parameters ....: $hGraphics - Pointer to a Graphics object
; $nX - X coordinate of the upper-left corner of the rectangle
; $nY - Y coordinate of the upper-left corner of the rectangle
; $nWidth - Width of the rectangle
; $nHeight - Height of the rectangle
; $iCombineMode - Regions combination mode:
; |0 - The existing region is replaced by the new region
; |1 - The existing region is replaced by the intersection of itself and the new region
; |2 - The existing region is replaced by the union of itself and the new region
; |3 - The existing region is replaced by the result of performing an XOR on the two regions
; |4 - The existing region is replaced by the portion of itself that is outside of the new region
; |5 - The existing region is replaced by the portion of the new region that is outside of the existing region
; Return values .: Success - True
; Failure - False and either:
; |@error and @extended are set if DllCall failed
; |$GDIP_STATUS contains a non zero value specifying the error code
; Remarks .......: None
; Related .......: None
; Link ..........; @@MsdnLink@@ GdipSetClipRect
; Example .......; No
; ===============================================================================================================================
Func _GDIPlus_GraphicsSetClipRect($hGraphics, $nX, $nY, $nWidth, $nHeight, $iCombineMode = 0)
Local $aResult = DllCall($ghGDIPDll, "uint", "GdipSetClipRect", "hwnd", $hGraphics, "float", $nX, "float", $nY, "float", $nWidth, "float", $nHeight, "int", $iCombineMode)
If @error Then Return SetError(@error, @extended, False)
$GDIP_STATUS = $aResult[0]
Return $aResult[0] = 0
EndFunc ;==>_GDIPlus_GraphicsSetClipRect
#endregion BILDSCHIRMSCHOHNER
Ich hoffe ihr könnt mir helfen...