Armand Posted May 6, 2008 Posted May 6, 2008 (edited) Well... that was made out of different UDFs gathered in the forum for my own use... i thought it might help some others in that specific format. All credits are as was when i found the UDFs. _AdvancedSplashScreen.au3: expandcollapse popup;=============================================================================== ; ; UDF Name: _AdvancedSplashScreen ; Description: Manipulates IE to show 'JPEG, TIFF, BMP, PNG and GIF' images inside AU3 GUIs. ; Function(s): _AdvancedSplashScreenON Creates the image as a splash screen. ; _AdvancedSplashScreenOFF Closes the splash screen. ; _GUICtrlCreatePIC Creates a picture control inside your GUI. ; _GUICtrlStopGIF Stop the picture control animation [GIF only] ; _GUICtrlResumeGIF Resumes the picture control animation [GIF only] ; _ImageGetSize Retrieves ove of the above file types image size. ; Requirement(s): #include <IE.au3>, #include <GUIConstants.au3>, #include <WindowsConstants.au3> ; Collected and composed by: Armand. ;=============================================================================== #include-once #include <IE.au3> #include <GUIConstants.au3> #include <WindowsConstants.au3> Global $_LastAdvancedSplashScreenCreated = 0 ;=============================================================================== ; ; Function Name: _AdvancedSplashScreenON($ImagePath, $Image_Width = 0, $Image_Height = 0, $Tile = 1) ; Description: Creates a splash screen. ; Parameter(s): $ImagePath [required] path and filename of the picture. ; $Image_Width [optional] splashscreen Width. ; $Image_Height [optional] splashscreen Height. ; $Tile [optional] 0=repeat, 1=no-repeat, 2=repeat-x, 3=repeat-y ; Requirement(s): #include <IE.au3>, #include <GUIConstants.au3>, #include <WindowsConstants.au3> ; Return Value(s): ; controlID of the SplashScreen created [GUI handle] ; Author(s): Armand. ;=============================================================================== Func _AdvancedSplashScreenON($ImagePath, $Image_Width = 0, $Image_Height = 0, $Tile = 1) #Region ### START Koda GUI section ### Form= Local $aSize $aSize = _ImageGetSize($ImagePath) If @error = 1 Then ConsoleWrite("_GUICtrlCreatePIC:: Can't find image size." & @CRLF) Else If $aSize[0] > $Image_Width Then $Image_Width = $aSize[0] If $aSize[1] > $Image_Height Then $Image_Height = $aSize[1] EndIf $_LastAdvancedSplashScreenCreated = GUICreate("Splash", $Image_Width, $Image_Height, -1, -1, BitOR($WS_SYSMENU, $WS_POPUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST, $WS_EX_WINDOWEDGE, $GUI_WS_EX_PARENTDRAG)) WinSetOnTop($_LastAdvancedSplashScreenCreated, "", 1) _GUICtrlCreatePIC($ImagePath, 0, 0, 1, $Image_Width, $Image_Height, $Tile) GUISetState(@SW_SHOW) #EndRegion ### START Koda GUI section ### Form= Return $_LastAdvancedSplashScreenCreated EndFunc Func _AdvancedSplashScreenOFF($SplashScreenID = $_LastAdvancedSplashScreenCreated) GUIDelete($SplashScreenID) EndFunc ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;################################################################################################################################# ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Ctrl Create Pic @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;################################################################################################################################# ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;=============================================================================== ; ; Function Name: _GUICtrlCreatePIC() ; Description: Create a picture control ; Parameter(s): $pic [required] path and filename of the animated GIF ; $x [optional] x pos of the top-left corner ; $y [optional] y pos of the top-left corner ; $border [optional] 0 = no border ; $pwidth [optional] 0 = use pic width. ; $pheight [optional] 0 = use pic height. ; $tile [optional] 0 = repeat, 1 = no-repeat, 2 = repeat-x, 3 = repeat-y. ; any other = sunken border ; Requirement(s): #include <IE.au3> ; Return Value(s): ; controlID of the control created ; Author(s): elgabionline, gafrost, Ed_Maximized ; Editted by: Armand. ; MSDN BODY::: http://msdn.microsoft.com/en-us/library/ms535205(VS.85).aspx ;=============================================================================== Func _GUICtrlCreatePIC($pic,$x=0,$y=0,$border=0, $pwidth = 0, $pheight = 0, $tile = 0) Dim $aTile[4] = ["repeat", "no-repeat", "repeat-x", "repeat-y"] Local $oPicIE, $aSize If $pwidth = 0 Or $pheight = 0 Then $aSize = _ImageGetSize($pic) If @error = 1 Then ConsoleWrite("_GUICtrlCreatePIC:: Can't find image size."&@CRLF) Else If $pwidth = 0 Then $pwidth = $aSize[0] If $pheight = 0 Then $pheight = $aSize[1] EndIf EndIf $oPicIE = ObjCreate("Shell.Explorer.2") $_AnimatedGif_GUIActiveX = GUICtrlCreateObj($oPicIE, $x, $y, $pwidth, $pheight) $oPicIE.navigate ("about:blank") While _IEPropertyGet($oPicIE, "busy") Sleep(100) WEnd $oPicIE.document.body.background = $pic $oPicIE.document.body.scroll = "no" $oPicIE.document.body.style.backgroundRepeat = $aTile[$tile] if $border=0 then $oPicIE.document.body.style.border = "0px groove" SetExtended($_AnimatedGif_GUIActiveX, $oPicIE) Return $oPicIE EndFunc ;=============================================================================== ; ; Function Name: _GUICtrlStopGIF() ; Description: stop an Animated GIF control created with _GUICtrlCreateGIF() ; Parameter(s): $Control [required] controlID of the control returned by _GUICtrlCreateGIF() ; ; Requirement(s): #include <IE.au3> ; Return Value(s): ; none ; Author(s): lod3n, Ed_Maximized ; ;=============================================================================== Func _GUICtrlStopGIF($Control) _IEAction ($Control, "stop" ) ; stop EndFunc ;=============================================================================== ; ; Function Name: _GUICtrlResumeGIF() ; Description: resume an Animated GIF control created with _GUICtrlCreateGIF() ; Parameter(s): $Control [required] controlID of the control returned by _GUICtrlCreateGIF() ; ; Requirement(s): #include <IE.au3> ; Return Value(s): ; none ; Author(s): lod3n, Ed_Maximized ; ;=============================================================================== Func _GUICtrlResumeGIF($Control) $Control.document.body.background = $Control.document.body.background ;resume EndFunc ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;################################################################################################################################# ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Image Get Size @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ;################################################################################################################################# ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;=============================================================================== ; ; Description: Return JPEG, TIFF, BMP, PNG and GIF image size. ; Parameter(s): File name ; Requirement(s): None special ; Return Value(s): On Success - array with width and height ; On Failure empty string and sets @ERROR: ; 1 - Not valid image or info not found ; Author(s): YDY (Lazycat) ; Version: 1.1.00 ; Date: 15.03.2005 ; ;=============================================================================== Func _ImageGetSize($sFile) Local $sHeader = _FileReadAtOffsetHEX($sFile, 1, 24) ; Get header bytes Local $asIdent = StringSplit("FFD8 424D 89504E470D0A1A 4749463839 4749463837 4949 4D4D", " ") Local $anSize = "" For $i = 1 To $asIdent[0] If StringInStr($sHeader, $asIdent[$i]) = 1 Then Select Case $i = 1 ; JPEG $anSize = _ImageGetSizeJPG($sFile) Exitloop Case $i = 2 ; BMP $anSize = _ImageGetSizeSimple($sHeader, 19, 23, 0) Exitloop Case $i = 3 ; PNG $anSize = _ImageGetSizeSimple($sHeader, 19, 23, 1) Exitloop Case ($i = 4) or ($i = 5) ; GIF $anSize = _ImageGetSizeSimple($sHeader, 7, 9, 0) Exitloop Case $i = 6 ; TIFF MM $anSize = _ImageGetSizeTIF($sFile, 0) Exitloop Case $i = 7 ; TIFF II $anSize = _ImageGetSizeTIF($sFile, 1) Exitloop EndSelect Endif Next If not IsArray ($anSize) Then SetError(1) Return($anSize) EndFunc ;=============================================================================== ; ; Description: Get image size at given bytes ; Parameter(s): File header ; Return Value(s): Array with dimension ; ;=============================================================================== Func _ImageGetSizeSimple($sHeader, $nXoff, $nYoff, $nByteOrder) Local $anSize[2] $anSize[0] = _Dec(StringMid($sHeader, $nXoff*2-1, 4), $nByteOrder) $anSize[1] = _Dec(StringMid($sHeader, $nYoff*2-1, 4), $nByteOrder) Return ($anSize) EndFunc ;=============================================================================== ; ; Description: Get JPG image size (may be used standalone with checking) ; Parameter(s): File name ; Return Value(s): On Success - array with dimension ; ;=============================================================================== Func _ImageGetSizeJPG($sFile) Local $anSize[2], $sData, $sSeg, $nFileSize, $nPos = 3 $nFileSize = FileGetSize($sFile) While $nPos < $nFileSize $sData = _FileReadAtOffsetHEX ($sFile, $nPos, 4) If StringLeft($sData, 2) = "FF" then ; Valid segment start If StringInStr("C0 C2 CA C1 C3 C5 C6 C7 C9 CB CD CE CF", StringMid($sData, 3, 2)) Then ; Segment with size data $sSeg = _FileReadAtOffsetHEX ($sFile, $nPos + 5, 4) $anSize[1] = Dec(StringLeft($sSeg, 4)) $anSize[0] = Dec(StringRight($sSeg, 4)) Return($anSize) Else $nPos= $nPos + Dec(StringRight($sData, 4)) + 2 Endif Else ExitLoop Endif Wend Return("") EndFunc ;=============================================================================== ; ; Description: Get TIFF image size (may be used standalone with checking) ; Parameter(s): File name ; Return Value(s): On Success - array with dimension ; ;=============================================================================== Func _ImageGetSizeTIF($sFile, $nByteOrder) Local $anSize[2], $pos = 3 $nTagsOffset = _Dec(_FileReadAtOffsetHEX($sFile, 5, 4), $nByteOrder) + 1 $nFieldCount = _Dec(_FileReadAtOffsetHEX($sFile, $nTagsOffset, 2), $nByteOrder) For $i = 0 To $nFieldCount - 1 $sField = _FileReadAtOffsetHEX($sFile, $nTagsOffset + 2 + 12 * $i, 12) $sTag = StringLeft($sField, 4) If $nByteOrder Then $sTag = StringRight($sTag, 2) & StringLeft($sTag, 2) Select Case $sTag = "0001" $anSize[0] = _Dec(StringRight($sField, 8), $nByteOrder) Case $sTag = "0101" $anSize[1] = _Dec(StringRight($sField, 8), $nByteOrder) EndSelect Next If ($anSize[0] = 0) or ($anSize[1] = 0) Then Return("") Return($anSize) Endfunc ;=============================================================================== ; ; Description: Basic function that read binary data into HEX-string ; Parameter(s): File name, Start offset, Number bytes to read ; Return Value(s): Hex string ; ;=============================================================================== Func _FileReadAtOffsetHEX ($sFile, $nOffset, $nBytes) Local $hFile = FileOpen($sFile, 0) Local $sTempStr = "" FileRead($hFile, $nOffset - 1) For $i = $nOffset To $nOffset + $nBytes - 1 $sTempStr = $sTempStr & Hex(Asc(FileRead($hFile, 1)), 2) Next FileClose($hFile) Return ($sTempStr) Endfunc ;=============================================================================== ; ; Description: Basic function, similar Dec, but take in account byte order ; Parameter(s): Hex string, Byte order ; Return Value(s): Decimal value ; ;=============================================================================== Func _Dec($sHexStr, $nByteOrder) If $nByteOrder Then Return(Dec($sHexStr)) Local $sTempStr = "" While StringLen($sHexStr) > 0 $sTempStr = $sTempStr & StringRight($sHexStr, 2) $sHexStr = StringTrimRight($sHexStr, 2) WEnd Return (Dec($sTempStr)) EndFuncƒoÝŠ÷ ØLZš™^jëhŠ×6#include "_AdvancedSplashScreen.au3" $image = @ProgramFilesDir & "\AutoIt3\Examples\GUI\Advanced\Images\Button.png" Example1() Example2() Func Example1() _AdvancedSplashScreenON($image) Sleep(5000) _AdvancedSplashScreenOFF() EndFunc ;==>Example1 Func Example2() #include <ButtonConstants.au3> #include <StaticConstants.au3> Opt("GUIOnEventMode", 1) #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 277, 230, 193, 125) GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close") $Button1 = GUICtrlCreateButton("Exit", 90, 200, 75, 25, 0) GUICtrlSetOnEvent(-1, "Button1Click") _GUICtrlCreatePIC($image, 30, 0) GUISetState(@SW_SHOW) #EndRegion ### START Koda GUI section ### Form= While 1 Sleep(100) WEnd EndFunc ;==>Example2 Func Button1Click() Exit EndFunc ;==>Button1Click Func Form1Close() Exit EndFunc ;==>Form1Close Edited May 6, 2008 by Armand mLipok 1 [u]My Au3 Scripts:[/u]____________(E)Lephant, A Share download manager (RS/MU etc)Http1.1 Console, The Ez Way!Internet Reconnection Automation Suite & A Macro Recording Tool.SK's Alarm Clock, Playing '.MP3 & .Wav' Files._________________Is GOD a mistake of the Humanity Or the Humanity is a mistake of GOD ?!
radienergos Posted May 12, 2008 Posted May 12, 2008 ok sorry for the post ,probably i am doing something wrong (and i don't have the strenght to look it right now ) , can i use a transparent png with this script ? , because i tried few pngs but it always paints the transparent parts with white color.
radienergos Posted May 12, 2008 Posted May 12, 2008 $Form1 = GUICreate("Form1", 633, 449, 193, 125) $pic="d:\1.png" $pic1=_GUICtrlCreatePIC($pic,0,0,0, 0, 0, 0) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd 1.png is a png with the firefox logo
CosmicDan Posted October 11, 2008 Posted October 11, 2008 Very nice! I would use this, except it is dependant on Internet Explorer but still very good. CosmicDan.com
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now