Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
- #AutoIt3Wrapper_Outfile=Test.scr
- #AutoIt3Wrapper_Outfile_x64=Test2.scr
- #AutoIt3Wrapper_Compile_Both=y
- #AutoIt3Wrapper_UseX64=y
- #AutoIt3Wrapper_Res_Fileversion=1.0.0
- #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
- #include <Date.au3>
- #include <GDIPlus.au3>
- #include <Misc.au3>
- #include <Timers.au3>
- #include <GUIConstantsEx.au3>
- #include <WindowsConstants.au3>
- #include <GuiListView.au3>
- #include <GuiImageList.au3>
- Opt("GUIOnEventMode", 1)
- _Singleton(@AutoItExe)
- ; -Authors: name22 (www.autoit.de), Andy (www.autoit.de), Facemix (www.autoit.de)
- Global $idle_o, $idle_n, $parent_pid, $aChildProcess, $iFlakeCount, $iMaxRadius
- #region WINDOWSTOOL
- Global $iCount = 10, $iExplosion = 100, $iExplosionGround = 1, $iRadius = 600, $iBack = 0x09000000, $iSleep = 5
- 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 & "\CountdownScreensaver.ini"
- 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]
- $hGUI = GUICreate($app_name, $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP, $WS_EX_TOPMOST)
- $iFlakeCount = 500
- $iMaxRadius = 3
- Case "/c"
- Opt("GUIOnEventMode", 0)
- _Settings()
- Exit
- Case "/p"
- $iFlakeCount = 50
- $iMaxRadius = 2
- $iW = 152
- $iH = 112
- $GUI_X = 0
- $GUI_Y = 0
- $GUI_W = $iW
- $GUI_H = $iH
- $main_screen_x = 0
- $show_FPS = False
- ;$maxStars = 30
- $size = 1
- $hGUI = GUICreate("GDI+ Countdown-Screensaver by (C) Clemens", $GUI_W, $GUI_H, $GUI_X, $GUI_Y, $WS_POPUP)
- _WinAPI_SetParent($hGUI, $CmdLine[2])
- $parent_pid = _WinAPI_GetParentProcess(@AutoItPID)
- EndSwitch
- #endregion WINDOWSTOOL
- ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- #region BILDSCHIRMSCHOHNER
- Global Const $nTau = ACos(-1) * 2
- Global $vNTdll = DllOpen("ntdll.dll")
- Global $tPrecSleep = DllStructCreate("int64 time;")
- Global $pPrecSleep = DllStructGetPtr($tPrecSleep)
- #region SETTINGS
- Global $iWidth = $iW
- Global $iHeight = $iH
- Global $nFPS = 25
- Global $nStepSpeed = 1
- #region COLORS
- ;Global $iARGB_BG = 0xFF505050
- Global $iARGB_Snow = 0xFFFFFFFF
- ;Global $iARGB_TextFill = 0xFF0000FF
- Global $iARGB_BG = IniRead("CountdownScreensaver.ini", "Settings", "BgColor", "0xFF000000")
- Global $iARGB_TextFill = IniRead("CountdownScreensaver.ini", "Settings", "TextColor", "0xFF000000")
- Global $iARGB_TextFill2 = 0xFFFF0000
- Global $iARGB_TextFill3 = 0xFF0000FF
- Global $iARGB_TextFill4 = 0xFF353535
- Global $iARGB_TextBorder = 0xFFA00000
- #endregion COLORS
- #region SNOWFLAKES
- Global $iMinFallingSpeed = 20, $iMaxFallingSpeed = 50
- Global $iMinOscillations = 2, $iMaxOscillations = 5
- Global $iMinOscillationDist = 10, $iMaxOscillationDist = 50
- Global $iMinRadius = 1
- #endregion SNOWFLAKES
- #region SNOWBLAST
- Global $iBlastRadius = 200
- Global $iBlastAccell = 300
- Global $nAirFriction = 0.95
- #endregion SNOWBLAST
- #endregion SETTINGS
- #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
- GUISetState()
- #region Initialize GFX Resources
- $hDC_Window = _WinAPI_GetDC($hGUI)
- $hDC_Bitmap = _WinAPI_CreateCompatibleDC($hDC_Window)
- $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Window, $iWidth, $iHeight)
- $hOldObj = _WinAPI_SelectObject($hDC_Bitmap, $hBitmap)
- _GDIPlus_Startup()
- ;Global $iARGB_Snow = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "/soother.png")
- $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, "0x" & $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
- While True
- If $cmdparam = "/s" Then
- GUISetCursor(16, 1, $hGUI)
- $idle_n = _Timer_GetIdleTime()
- If $idle_n < $idle_o Then _Close()
- $idle_o = $idle_n
- Else
- If Not BitAND(WinGetState($hGUI), 2) Then _Close()
- $aChildProcess = _WinAPI_EnumChildProcess($parent_pid)
- If $aChildProcess[0][0] > 1 Then _Close()
- EndIf
- 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
- $nStep += $nStepSpeed / $nFPS_Cur
- $nScale = Abs(Sin($nStep))
- _GDIPlus_GraphicsClear($hGraphics, $iARGB_BG)
- 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)
- 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(), 2014 & "/01/01 00:00:00") * 1000, $iH, $iM, $iS)
- ;_TicksToTime(_DateDiff('s', _NowCalc(), @YEAR + 1 & "/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, $hGUI)
- 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()
- _Shutdown()
- GUIDelete($hGUI)
- Exit
- EndFunc ;==>_Close
- Func _Shutdown()
- _WinAPI_SelectObject($hDC_Bitmap, $hOldObj)
- _WinAPI_ReleaseDC($hGUI, $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)
- Local $tBounds = _GDIPlus_RectFCreate(0, 0, 0, 0)
- 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
- 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($hGUI, 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
- ; #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
- #region WinAPIEx.au3 functions
- Func _WinAPI_GetParentProcess($PID = 0)
- If Not $PID Then
- $PID = _WinAPI_GetCurrentProcessID()
- If Not $PID Then Return SetError(1, 0, 0)
- EndIf
- Local $hSnapshot = DllCall('kernel32.dll', 'ptr', 'CreateToolhelp32Snapshot', 'dword', 0x00000002, 'dword', 0)
- If (@error) Or (Not $hSnapshot[0]) Then Return SetError(1, 0, 0)
- Local $tPROCESSENTRY32 = DllStructCreate('dword Size;dword Usage;dword ProcessID;ulong_ptr DefaultHeapID;dword ModuleID;dword Threads;dword ParentProcessID;long PriClassBase;dword Flags;wchar ExeFile[260]')
- Local $pPROCESSENTRY32 = DllStructGetPtr($tPROCESSENTRY32)
- Local $Ret, $Result = 0
- $hSnapshot = $hSnapshot[0]
- DllStructSetData($tPROCESSENTRY32, 'Size', DllStructGetSize($tPROCESSENTRY32))
- $Ret = DllCall('kernel32.dll', 'int', 'Process32FirstW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
- While (Not @error) And ($Ret[0])
- If DllStructGetData($tPROCESSENTRY32, 'ProcessID') = $PID Then
- $Result = DllStructGetData($tPROCESSENTRY32, 'ParentProcessID')
- ExitLoop
- EndIf
- $Ret = DllCall('kernel32.dll', 'int', 'Process32NextW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
- WEnd
- _WinAPI_CloseHandle($hSnapshot)
- If Not $Result Then Return SetError(1, 0, 0)
- Return $Result
- EndFunc ;==>_WinAPI_GetParentProcess
- Func _WinAPI_EnumChildProcess($PID = 0)
- If Not $PID Then
- $PID = _WinAPI_GetCurrentProcessID()
- If Not $PID Then Return SetError(1, 0, 0)
- EndIf
- Local $hSnapshot = DllCall('kernel32.dll', 'ptr', 'CreateToolhelp32Snapshot', 'dword', 0x00000002, 'dword', 0)
- If (@error) Or (Not $hSnapshot[0]) Then Return SetError(1, 0, 0)
- Local $tPROCESSENTRY32 = DllStructCreate('dword Size;dword Usage;dword ProcessID;ulong_ptr DefaultHeapID;dword ModuleID;dword Threads;dword ParentProcessID;long PriClassBase;dword Flags;wchar ExeFile[260]')
- Local $pPROCESSENTRY32 = DllStructGetPtr($tPROCESSENTRY32)
- Local $Ret, $Result[101][2] = [[0]]
- $hSnapshot = $hSnapshot[0]
- DllStructSetData($tPROCESSENTRY32, 'Size', DllStructGetSize($tPROCESSENTRY32))
- $Ret = DllCall('kernel32.dll', 'int', 'Process32FirstW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
- While (Not @error) And ($Ret[0])
- If DllStructGetData($tPROCESSENTRY32, 'ParentProcessID') = $PID Then
- $Result[0][0] += 1
- If $Result[0][0] > UBound($Result) - 1 Then
- ReDim $Result[$Result[0][0] + 100][2]
- EndIf
- $Result[$Result[0][0]][0] = DllStructGetData($tPROCESSENTRY32, 'ProcessID')
- $Result[$Result[0][0]][1] = DllStructGetData($tPROCESSENTRY32, 'ExeFile')
- EndIf
- $Ret = DllCall('kernel32.dll', 'int', 'Process32NextW', 'ptr', $hSnapshot, 'ptr', $pPROCESSENTRY32)
- WEnd
- _WinAPI_CloseHandle($hSnapshot)
- If $Result[0][0] Then
- ReDim $Result[$Result[0][0] + 1][2]
- Else
- Return SetError(1, 0, 0)
- EndIf
- Return $Result
- EndFunc ;==>_WinAPI_EnumChildProcess
- #endregion
- #region Einstellungen - Settings
- Func _Settings()
- Global $aColor[25][2] = [["Farbe belassen", 0xFFFFFF], _
- ["Rot", 0xFFFF0000],["Grün", 0xFF00FF00],["Blau", 0xFF0000FF],["Schwarz", 0xFF000000],["Maroon", 0xFF800000],["DarkRed", 0xFF8B0000], _
- ["FireBrick", 0xFFB22222],["Salmon", 0xFFFA8072],["OrangeRed", 0xFFFF4500],["Chocolate", 0xFFD2691E],["DarkOrange", 0xFFFF8C00],["Orange", 0xFFFFA500], _
- ["Gold", 0xFFFFD700],["Yellow", 0xFFFFFF00],["YellowGreen",0xFF9ACD32],["GreenYellow",0xFFADFF2F],["Green", 0xFF008000],["Navy", 0xFF000080], _
- ["Purple", 0xFF800080],["Crimson", 0xFFDC143C],["Brown", 0xFFA52A2A],["Gray", 0xFF808080],["Silver", 0xFFC0C0C0],["LightGray", 0xFFD3D3D3]]
- Global $Form1, $hImage1, $hImage2,$hListView1,$hListView2,$Button1,$Button2
- $Form1 = GUICreate("Einstellungen", 284, 388, 192, 124)
- GUICtrlCreateLabel("Hier können Sie die Einstellungen vornehmen!", 8, 8, 266, 17)
- GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
- GUICtrlCreateLabel("HintergrundFarbe:", 8, 48, 114, 17)
- GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
- GUICtrlCreateLabel("TextFarbe:", 8, 200, 65, 17)
- GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
- $Button1 = GUICtrlCreateButton("Abbrechen", 56, 352, 75, 25)
- $Button2 = GUICtrlCreateButton("Übernehmen", 144, 352, 75, 25)
- ;$List1 = GUICtrlCreateList("", 8, 80, 265, 97)
- $hListView1 = GUICtrlCreateListView("", 8, 80, 265, 97)
- $hListView2 = GUICtrlCreateListView("", 8, 232, 265, 97)
- ; Add columns
- _GUICtrlListView_AddColumn($hListView1, "Hintergrundfarbe", 200)
- _GUICtrlListView_AddColumn($hListView2, "Textfarbe", 200)
- ; Load images
- $hImage1 = _GUIImageList_Create()
- $hImage2 = _GUIImageList_Create()
- For $l = 0 To 24
- _GUIImageList_Add($hImage1, _GUICtrlListView_CreateSolidBitMap($hListView1, $aColor[$l][1], 16, 16))
- _GUIImageList_Add($hImage2, _GUICtrlListView_CreateSolidBitMap($hListView2, $aColor[$l][1], 16, 16))
- ; Add items
- _GUICtrlListView_AddItem($hListView1, $aColor[$l][0], $l)
- If $l = 0 Then
- _GUICtrlListView_AddItem($hListView2, "Eingestellte Farbe", $l)
- Else
- _GUICtrlListView_AddItem($hListView2, $aColor[$l][0], $l)
- EndIf
- Next
- _GUICtrlListView_SetImageList($hListView1, $hImage1, 1)
- _GUICtrlListView_SetImageList($hListView2, $hImage2, 1)
- GUISetState(@SW_SHOW)
- While 1
- Switch GUIGetMsg()
- Case $GUI_EVENT_CLOSE, $Button1
- Exit
- Case $Button2
- _RegWrite()
- EndSwitch
- WEnd
- EndFunc
- Func _RegWrite()
- Local $index1 = _GUICtrlListView_GetSelectedIndices($hListView1), $index2 = _GUICtrlListView_GetSelectedIndices($hListView2)
- If $index1 < 0 Or $index2 < 0 Then Return MsgBox(0, 'Fehler', 'Bitte in beiden Listen auswählen')
- If $index1 = 0 Then
- For $l = 0 To 23
- _GUICtrlListView_SetItemChecked($hListView1, $l, False) ; aber wozu das??? sind doch keine Checkboxen vorhanden
- Next
- Else
- IniWrite("CountdownScreensaver.ini", "Settings", "BgColor", "0x" & Hex( $aColor[$index1][1]))
- ;RegWrite("HKEY_CURRENT_USER\SOFTWARE\CountdownScreensaver", "BgColor", "REG_DWORD", "0x" & Hex( $aColor[$index1][1], 6) )
- ; ConsoleWrite('REG: BgCol: 0x' & Hex($aColor[$index1][1],6) & @CRLF)
- EndIf
- If $index2 = 0 Then
- For $i = 0 To 23
- _GUICtrlListView_SetItemChecked($hListView2, $i, False)
- Next
- Else
- IniWrite("CountdownScreensaver.ini", "Settings", "TextColor", "0x" & Hex( $aColor[$index2][1]))
- ;RegWrite("HKEY_CURRENT_USER\SOFTWARE\CountdownScreensaver", "TextColor", "REG_DWORD", "0x" & Hex( $aColor[$index2][1], 6) )
- ; ConsoleWrite('REG: TextCol: 0x' & Hex($aColor[$index2][1],6) & @CRLF)
- EndIf
- EndFunc
- #endregion Einstellungen - Settings
- #endregion BILDSCHIRMSCHOHNER
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement