#include-once #include #include #include #include #include _SplashOn('Hello World', 200, 100) ;================================================================================================== ; Function Name: _SplashOn($Item, $width=-1, $height=-1, $left=-1, $top=-1, $timeout=-1, $txtCol=-1, $bkCol=-1, $trans=1, $size=-1, $font=-1) ; Description:: Show an SplashImage (gif,jpg,bmp) or an SplashText ; Parameter(s): $Item - Path picture file or SplashText; Autodetection if file or text ; part optional $width - text: width; picture: - by default(-1) use original size of picture ; part optional $height - text: height; picture: - by default(-1) use original size of picture ; optional $left - left margin (default=-1 horizontal centered) ; optional $top - upper margin (default=-1 vertikal centered) ; optional $timeout- time how long to show picture/text (default=-1, 3 seconds) ; optional $txtCol - SplashText: text color RGB (default=-1, red) ; optional $bkCol - SplashText: back color RGB (default=-1, black) ; optional $trans - SplashText: background transparency yes/now (default=1, yes) ; optional $size - SplashText: font size (default=-1, 30) ; 14 conforms approximately 12 at TimesNewRoman ; optional $font - SplashText: font name (default=-1, Arial) ; Return: Succes - 1 ; Failure - 0 set @error: 1= given file doesn't exist; 2= no size given for textarea ; Author(s): BugFix (bugfix@autoit.de) ;================================================================================================== Func _SplashOn($Item, $width=-1, $height=-1, $left=-1, $top=-1, $timeout=-1, $txtCol=-1, $bkCol=-1, $trans=1, $size=-1, $font=-1) ; picture path or text If $timeout < 0 Then $timeout = 3000 If $txtCol < 0 Then $txtCol = 0xFF0000 If $bkCol < 0 Then $bkCol = 0x000000 If $trans < 0 Then $trans = 0 If $size < 0 Then $size = 30 If $font = -1 Then $font = 'Arial' If StringRegExp(StringLeft($Item, 3), '[a-zA-Z]:\\') Then ; picture If Not FileExists($Item) Then Return SetError(1,0,0) If ($width = -1) Or ($height = -1) Then Local $objShell = ObjCreate("Shell.Application") Local $objFSO = ObjCreate("Scripting.FileSystemObject") Local $objFile = $objFSO.GetFile($Item) Local $FileName = $objFSO.GetFileName($objFile) Local $objFolder = $objShell.Namespace($objFSO.GetParentFolderName($objFile)) For $strFileName In $objFolder.Items If $objFolder.GetDetailsOf($strFileName, 0) <> $FileName Then ContinueLoop $width = StringRegExpReplace($objFolder.GetDetailsOf($strFileName, 27), '(\d+).*', '$1') $height = StringRegExpReplace($objFolder.GetDetailsOf($strFileName, 28), '(\d+).*', '$1') Next EndIf Local $gui = GUICreate("", $width, $height, $left, $top, $WS_POPUP, $WS_EX_TOPMOST) Local $ctrl = GUICtrlCreatePic($Item, 0, 0, $width, $height) GUISetState(@SW_SHOW) Local $pos = WinGetPos($gui), $combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0) Local $ctrl_pos = ControlGetPos($gui, "", $ctrl) Local $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3]) _WinAPI_CombineRgn($combined_rgn, $combined_rgn, $ctrl_rgn, $RGN_OR) _WinAPI_DeleteObject($ctrl_rgn) _WinAPI_SetWindowRgn($gui, $combined_rgn) Sleep($timeout) GUIDelete($gui) Else ; text If ($width = -1) Or ($height = -1) Then Return SetError(2,0,0) If $left = -1 Then $left = Int((@DesktopWidth/2) - ($width/2)) If $top = -1 Then $top = Int((@DesktopHeight/2) - ($height/2)) Local $tRECT, $hFont, $hOldFont, $hDC $tRECT = DllStructCreate($tagRect) DllStructSetData($tRECT, "Left", $left) DllStructSetData($tRECT, "Top", $top) DllStructSetData($tRECT, "Right", $left + $width) DllStructSetData($tRECT, "Bottom", $top + $height) $hDC = _WinAPI_GetDC(0) $hFont = _WinAPI_CreateFont($size, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _ $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, $font) $hOldFont = _WinAPI_SelectObject($hDC, $hFont) Local $sH = Hex($txtCol,6) $txtCol = '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2) $sH = Hex($BkCol,6) $bkCol = '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2) _WinAPI_SetTextColor($hDC, $txtCol) _WinAPI_SetBkColor($hDC, $bkCol) If $trans Then _WinAPI_SetBkMode($hDC, $TRANSPARENT) Local $timer = TimerInit() Do _WinAPI_DrawText($hDC, $Item, $tRECT, $DT_CENTER) Sleep(20) Until TimerDiff($timer) > $timeout _WinAPI_SelectObject($hDC, $hOldFont) _WinAPI_DeleteObject($hFont) _WinAPI_ReleaseDC(0, $hDC) _WinAPI_InvalidateRect(0, 0) $tRECT = 0 EndIf Return 1 EndFunc ;==>_SplashOn