Armand Posted May 6, 2008 Share 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 ?! Link to comment Share on other sites More sharing options...
radienergos Posted May 12, 2008 Share 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. Link to comment Share on other sites More sharing options...
Info Posted May 12, 2008 Share Posted May 12, 2008 Example please Link to comment Share on other sites More sharing options...
radienergos Posted May 12, 2008 Share 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 Link to comment Share on other sites More sharing options...
CosmicDan Posted October 11, 2008 Share Posted October 11, 2008 Very nice! I would use this, except it is dependant on Internet Explorer but still very good. CosmicDan.com Link to comment Share on other sites More sharing options...
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