Snippets ( Graphics )

From AutoIt Wiki
Revision as of 07:04, 3 August 2012 by Chimaera (talk | contribs) (→‎Custom GUI Cursor ~ Author - Saunders)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Please always credit an author in your script if you use their code, Its only polite.

Animated Gif ~ Author - GaryFrost

; Animated Gif

Opt("MustDeclareVars", 1)
#include <IE.au3>

_Main()

Func _Main()
    Local $pheight = 50, $pwidth = 50, $oIE, $GUIActiveX, $gif
    $gif = FileOpenDialog("Select Animated Gif", @ScriptDir, "gif files (*.gif)", 3)
    If @error Then Exit
    _GetGifPixWidth_Height($gif, $pwidth, $pheight)
    $oIE = ObjCreate("Shell.Explorer.2")
    GUICreate("Embedded Web control Test", 640, 580)
    $GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, $pwidth, $pheight)
    $oIE.navigate ("about:blank")
    While _IEPropertyGet($oIE, "busy")
        Sleep(100)
    WEnd
    $oIE.document.body.background = $gif
    $oIE.document.body.scroll = "no"
    GUISetState()
    While GUIGetMsg() <> -3
    WEnd
EndFunc   ;==>_Main

Func _GetGifPixWidth_Height($s_gif, ByRef $pwidth, ByRef $pheight)
    If FileGetSize($s_gif) > 9 Then
        Local $sizes = FileRead($s_gif, 10)
        ConsoleWrite("Gif version: " & StringMid($sizes, 1, 6) & @LF)
        $pwidth = Asc(StringMid($sizes, 8, 1)) * 256 + Asc(StringMid($sizes, 7, 1))
        $pheight = Asc(StringMid($sizes, 10, 1)) * 256 + Asc(StringMid($sizes, 9, 1))
        ConsoleWrite($pwidth & " x " & $pheight & @LF)
    EndIf
EndFunc   ;==>_GetGifPixWidth_Height

Return To Contents

_AreIconsEqual() ~ Author - JohnOne

;#### Example ####
#include <WinAPI.au3>
#include <Constants.au3>

;get handles to two icons
;Change the numbers 3 or load an icon from another source
Local $sModule = @SystemDir & "\shell32.dll"
Local $hModule = _WinAPI_GetModuleHandle($sModule)
Local $hmyIcon1 = _WinAPI_LoadImage($hModule, 3, $IMAGE_ICON, 0, 0, 0)
Local $hmyIcon2 = _WinAPI_LoadImage($hModule, 3, $IMAGE_ICON, 0, 0, 0)

Local $bEqual = _AreIconsEqual($hmyIcon1, $hmyIcon2)
If @error Then
   Exit MsgBox(0, "Error", @error)
EndIf
MsgBox(0, "Icons Equal", $bEqual)

;Checks if two Icons are the same.
Func _AreIconsEqual($hicon1, $hicon2)
   Local $aRtn = DllCall("shlwapi.dll", "BOOL", 548, "handle", $hicon1, "handle", $hicon2)
   If @error Then
     Return SetError(@error)
   EndIf
   Return $aRtn[0]
EndFunc   ;==>_AreIconsEqual

Return To Contents

Array Of Pixel Colours ~ Author - Malkey

;=========================================================
; Produces an array of pixel colours used in an image that are below the colour 0x202020 (array[n][0]),
; Number of times that colour is used (array[n][1]), and,
; the percentage of the numer of times the colour is used over the total number of pixels in the image (array[n][2]).
; Array[0][0] contains the number of unique pixels used in the image below 0x202020 colour.
; Array[0][1] contains the total number of pixels used in the image below 0x202020 colour.
; Array[0][2] contains the percentage of the total number of pixels used in the image below 0x202020 colour.
;============================================================

#include <WinAPI.au3>
#include <ScreenCapture.au3>
#include <GDIPlus.au3>
#include <Array.au3>

Dim $pixels, $iTotalReplace
Local $Path = FileOpenDialog("Choose Image File", @ScriptDir & "", "Images (*.gif;*.png;*.jpg;*.bmp)| All (*.*)")
If $Path <> "" Then
    _GDIPlus_Startup()

    $hImage = _GDIPlus_ImageLoadFromFile($Path)
    $width = _GDIPlus_ImageGetWidth($hImage)
    $height = _GDIPlus_ImageGetHeight($hImage)
    $hBmp = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)

    $aSize = DllCall('gdi32.dll', 'int', 'GetBitmapBits', 'ptr', $hBmp, 'int', 0, 'ptr', 0)
    If $aSize[0] Then
        $tBits = DllStructCreate('byte[' & $aSize[0] & ']')
        DllCall('gdi32.dll', 'int', 'GetBitmapBits', 'ptr', $hBmp, 'int', $aSize[0], 'ptr', DllStructGetPtr($tBits))
        $sHex = Hex(DllStructGetData($tBits, 1))

        ; Selects all pixels below/less than 0x202020
        $pixels = StringRegExp($sHex, "([01][0-9A-F][01][0-9A-F][01][0-9A-F])FF", 3)
        
        ; Selects all pixels below/less than 0x505050 (Can take a while)
        ;$pixels = StringRegExp($sHex, "([0-5][0-9A-F][0-5][0-9A-F][0-5][0-9A-F])FF", 3)
        
        $sHexReduced = _ArrayToString($pixels) & "|"

        Dim $pixels[1][3]
        While StringLen($sHexReduced) > 6
            ReDim $pixels[UBound($pixels) + 1][3]
            $PixTemp = StringLeft($sHexReduced, 7)
            $sHexReduced = StringReplace($sHexReduced, $PixTemp, "", 0)
            $numreplacements = @extended

            $pixels[UBound($pixels) - 1][1] = $numreplacements
            $pixels[UBound($pixels) - 1][0] = StringTrimRight($PixTemp, 1)
            $pixels[UBound($pixels) - 1][2] = StringFormat("%1.4f%%", $numreplacements * 100 / ($height * $width))
            $iTotalReplace += $numreplacements

        WEnd
        $pixels[0][0] = UBound($pixels) - 1
        $pixels[0][1] = $iTotalReplace
        $pixels[0][2] = StringFormat("%1.4f%%", $iTotalReplace * 100 / ($height * $width))
    EndIf
    _ArraySort($pixels, 0, 1, 0, 0)
    _ArrayDisplay($pixels,$Path)
    _WinAPI_DeleteObject($hBmp)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
EndIf

_CalcContrastColour() ~ Author - Melba23

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test", 500, 500)
$cLabel = GUICtrlCreateLabel("", 100, 100, 300, 300)
$cButton = GUICtrlCreateButton("Change", 10, 450, 80, 30)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $cButton
            $iColour = Random(0, 0xFFFFFF, 1)
            GUISetBkColor($iColour)
            $iContrast_Colour = _CalcContrastColour($iColour)
            GUICtrlSetBkColor($cLabel, $iContrast_Colour)
    EndSwitch
WEnd

Func _CalcContrastColour($iColour, $iTolerance = 30)
    Switch $iTolerance
        Case 0 To 255
            $iTolerance = Int($iTolerance)
        Case Else
            $iTolerance = 30
    EndSwitch

    If (Abs(BitAND($iColour, 0xFF) - 0x80) <= $iTolerance And _
        Abs(BitAND(BitShift($iColour, 8), 0xFF) - 0x80) <= $iTolerance And _
        Abs(BitAND(BitShift($iColour, 16), 0xFF) - 0x80) <= $iTolerance) _
        Then Return BitAND((0x7F7F7F + $iColour), 0xFFFFFF)

    Return BitXOR($iColour, 0xFFFFFF)
EndFunc   ;==>_CalcContrastColour

Custom GUI Cursor ~ Author - Saunders

; Custom GUI Cursor, Mouse over second gui to view.

#include <GuiConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $Gui = GuiCreate("Test", 300, 200)
GUISetState()

Local $Gui2 = GuiCreate("Test", 300, 200,750)
GUISetState()

GUIRegisterMsg($WM_SETCURSOR, 'WM_SETCURSOR')

Local $Cur = DllCall("user32.dll", "int", "LoadCursorFromFile", "str","C:\windows\cursors\pen_m.cur")
if @error Then MsgBox(0,"dd","whoopsie!")

While 1
    Local $Msg = GUIGetMsg(1)
    Select
        Case $Msg[0] = $GUI_EVENT_CLOSE
            Exit
    EndSelect
WEnd

Func WM_SETCURSOR($hWnd, $iMsg, $iWParam, $iLParam)
    If $hWnd = $Gui Then
        DllCall("user32.dll", "int", "SetCursor", "int", $Cur[0])
        Return 0
    EndIf
EndFunc

_GUICtrlSetImageEx() ~ Author - guinness

#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>

_GDIPlus_Startup()
Example()
_GDIPlus_Shutdown()

Func Example()
    GUICreate('')

    _GUICtrlSetImageEx(@ScriptDir & "Example.png", 5, 5)

    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>Example

; Version: 1.00. AutoIt: V3.3.8.1
; Create an image control and set an image file to the control, works with png too.
Func _GUICtrlSetImageEx($sImageFile, $iLeft, $iTop)
    Local Const $STM_SETIMAGE = 0x0172
    Local $hImage = _GDIPlus_ImageLoadFromFile($sImageFile)
    Local $iWidth = _GDIPlus_ImageGetWidth($hImage)
    Local $iHeight = _GDIPlus_ImageGetHeight($hImage)
    Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
    _GDIPlus_ImageDispose($hImage)

    Local $iControlID = GUICtrlCreatePic('', $iLeft, $iTop, $iWidth, $iHeight)
    _WinAPI_DeleteObject(GUICtrlSendMsg($iControlID, $STM_SETIMAGE, 0, $hBitmap))
    _WinAPI_DeleteObject($hBitmap)
    Return $iControlID
EndFunc   ;==>_GUICtrlSetImageEx

Return To Contents

_IconButton() ~ Author - ProgAndy

;===============================================================================
;
; Function Name:   _IconButton()
; Description::    Creates a button with Icon and Text
; Parameter(s):    $text - text
;                  $dll - Icon FileName
;                  $iconID - ID of icon in File
;                  $x - top
;                  $y - left
;                  $w - width, is min. 40
;                  $h - height, is min. 55
; Requirement(s):  AutoIT :P 
; Return Value(s): ControlID of the button, to cnage the Icon use the functions below :) 
; Author(s):       Prog@ndy
;
;===============================================================================
;
Func _IconButton($text,$dll,$iconID,$x,$y,$w = 50,$h = 60)
    Local $space, $spaceh = 9
    If $w < 40 Then $w = 40
    Local $space = Floor(($w-32)/2)
    If $h < 55 Then $h = 55
    If $h < 60 Then $spaceh = 5
    GUICtrlCreateIcon($dll, $iconID, $x+$space, $y+$spaceh, 32, 32,0) ; --> die letzte 0, damit kein Klick-Ereignis ausgelöst wird (Click-Through)
    Return GUICtrlCreateButton($text, $x, $y, $w, $h, BitOR($WS_CLIPSIBLINGS, $BS_BOTTOM, $BS_MULTILINE))
EndFunc

; by Prog@ndy
Func _IconButtonSetIco($btn,$dll, $iconID=0)
    GUICtrlSetImage($btn-1,$dll, $iconID)
EndFunc
; by Prog@ndy
Func _IconButtonDelete($btn)
    GUICtrlDelete($btn-1)
    GUICtrlDelete($btn)
EndFunc
; by Prog@ndy
Func _IconButtonIconSetStyle($btn,$style,$styleEx)
    GUICtrlSetStyle($btn-1,$style,$styleEx)
EndFunc

; Gets The Control ID of the Icon, so you can use all GUICtrl... Functions on it :) 
; by Prog@ndy
Func _IconButtonIconGetCtrlID($btn)
    Return $btn-1
EndFunc

_IconOnButton() ~ Author - Valuater

; Icon on Button - (made easy)
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>

Global $mywin = GUICreate("my gui")
Local $btn1 = _IconOnButton(" Help", 30, 30, 70, 32, 23)
GUISetState()

While 1
    Local $msg = GUIGetMsg()
    If $msg = $btn1 Then MsgBox(0,0,"You pressed the Icon Button  ", 2)
    If $msg = $GUI_EVENT_CLOSE Then Exit
WEnd

Func _IconOnButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $BIconNum, $BIDLL = "shell32.dll")
    GUICtrlCreateIcon($BIDLL, $BIconNum, $BIleft + 5, $BItop + (($BIheight - 16) / 2), 16, 16)
    GUICtrlSetState( -1, $GUI_DISABLE)
    Local $XS_btnx = GUICtrlCreateButton($BItext, $BIleft, $BItop, $BIwidth, $BIheight, $WS_CLIPSIBLINGS)
    Return $XS_btnx
EndFunc ;==>_IconOnButton()

_ImageSize() ~ Author - JScript

;Author: JScript - Snippet Version No. = 1.0
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 23/05/12.

Local $sImage = FileOpenDialog("choose an image file to measure...", @DocumentsCommonDir, "Images (*.jpg;*.bmp;*.gif;*.png)", 1)
Local $aiSize = _ImageSize($sImage)

MsgBox(4096, "ImageSize", "Image: " & $sImage & @CRLF & @CRLF & "Width: " & $aiSize[0] & @CRLF & "Height: " & $aiSize[1])

Func _ImageSize($ImgFullPath)
    Local $hWnd, $hGuiSwitch, $aCtrlSize, $aRetSize[2] = [0, 0]

    $hWnd = GUICreate($ImgFullPath, 0, 0, 0, 0, BitOR(0x80000000, 0x20000000), BitOR(0x00000080, 0x00000020))
    $hGuiSwitch = GUISwitch($hWnd)
    $aCtrlSize = ControlGetPos($hWnd, "", GUICtrlCreatePic($ImgFullPath, 0, 0, 0, 0))
    GUIDelete($hWnd)
    GUISwitch($hGuiSwitch)

    If IsArray($aCtrlSize) Then
        $aRetSize[0] = $aCtrlSize[2]; Width
        $aRetSize[1] = $aCtrlSize[3]; Height
        Return SetError(0, 0, $aRetSize)
    EndIf
    Return SetError(1, 0, $aRetSize)
EndFunc   ;==>_ImageSize

Return To Contents

_IsCheckbox() ~ Author - guinness

; Check if a variable is referencing a Checkbox control.

#include <ButtonConstants.au3>
#include <Constants.au3>
#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateRadio('', 0, 0, 500, 500) ; This is considered a 'Button' by _WinAPI_GetClassName too.
    Local $iCheckbox = GUICtrlCreateCheckbox('', 0, 0, 100, 20)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Radio ID: ' & _IsCheckbox($iLabel) & @CRLF & _
            'AutoIt Radio Handle: ' & _IsCheckbox(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt Checkbox ID: ' & _IsCheckbox($iCheckbox) & @CRLF & _
            'AutoIt Checkbox Handle: ' & _IsCheckbox(GUICtrlGetHandle($iCheckbox)) & @CRLF)

    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsCheckbox($hWnd)
    If IsHWnd($hWnd) = 0 Then
        $hWnd = GUICtrlGetHandle($hWnd)
    EndIf
    If _WinAPI_GetClassName($hWnd) = 'Button' Then
        Local $iLong = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
        Return (BitAND($iLong, $BS_CHECKBOX) = $BS_CHECKBOX Or BitAND($iLong, $BS_AUTOCHECKBOX) = $BS_AUTOCHECKBOX)
    EndIf
    Return False
EndFunc   ;==>_IsCheckbox

_IsComboBox() ~ Author - guinness

; Check if a variable is referencing a ComboBox control.

#include <GUIComboBox.au3>
#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iComboBox = GUICtrlCreateCombo('', 0, 0, 500, 500)
    Local $hComboBox = _GUICtrlComboBox_Create($hGUI, 'Example', 0, 0, 500, 500)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsComboBox($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsComboBox(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt ComboBox ID: ' & _IsComboBox($iComboBox) & @CRLF & _
            'AutoIt ComboBox Handle: ' & _IsComboBox(GUICtrlGetHandle($iComboBox)) & @CRLF & _
            'ComboBox UDF Handle: ' & _IsComboBox($hComboBox) & @CRLF)

    _GUICtrlComboBox_Destroy($hComboBox)
    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsComboBox($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'ComboBox'
EndFunc   ;==>_IsComboBox

_IsListBox() ~ Author - guinness

; Check if a variable is referencing a ListBox control.

#include <GUIListBox.au3>
#include <WinAPI.au3>

Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iListBox = GUICtrlCreateList('', 0, 0, 500, 500)
    Local $hListBox = _GUICtrlListBox_Create($hGUI, 'Example', 0, 0, 500, 500)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsListBox($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsListBox(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt ListBox ID: ' & _IsListBox($iListBox) & @CRLF & _
            'AutoIt ListBox Handle: ' & _IsListBox(GUICtrlGetHandle($iListBox)) & @CRLF & _
            'ListBox UDF Handle: ' & _IsListBox($hListBox) & @CRLF)

    _GUICtrlListBox_Destroy($hListBox)
    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsListBox($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'ListBox'
EndFunc   ;==>_IsListBox

_IsListView() ~ Author - guinness

; Check if a variable is referencing a ListView control.

#include <GUIListView.au3>
#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iListView = GUICtrlCreateListView(0, 0, 500, 500)
    Local $hListView = _GUICtrlListView_Create($hGUI, 'Example', 0, 0, 500, 500)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsListView($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsListView(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt ListView ID: ' & _IsListView($iListView) & @CRLF & _
            'AutoIt ListView Handle: ' & _IsListView(GUICtrlGetHandle($iListView)) & @CRLF & _
            'ListView UDF Handle: ' & _IsListView($hListView) & @CRLF)

    _GUICtrlListView_Destroy($hListView)
    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsListView($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'SysListView32'
EndFunc   ;==>_IsListView

_IsProgress() ~ Author - guinness

; Check if a variable is referencing aProgress control.

#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iProgress = GUICtrlCreateProgress(0, 0, 500, 20)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsProgress($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsProgress(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt Progress ID: ' & _IsProgress($iProgress) & @CRLF & _
            'AutoIt Progress Handle: ' & _IsProgress(GUICtrlGetHandle($iProgress)) & @CRLF)

    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsProgress($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'msctls_progress32'
EndFunc   ;==>_IsProgress

_IsRadio() ~ Author - guinness

; Check if a variable is referencing a Radio control.

#include <ButtonConstants.au3>
#include <Constants.au3>
#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateCheckbox('', 0, 0, 500, 500) ; This is considered a 'Button' by _WinAPI_GetClassName too.
    Local $iRadio = GUICtrlCreateRadio('', 0, 0, 100, 20)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Checkbox ID: ' & _IsRadio($iLabel) & @CRLF & _
            'AutoIt Checkbox Handle: ' & _IsRadio(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt Radio ID: ' & _IsRadio($iRadio) & @CRLF & _
            'AutoIt Radio Handle: ' & _IsRadio(GUICtrlGetHandle($iRadio)) & @CRLF)

    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsRadio($hWnd)
    If IsHWnd($hWnd) = 0 Then
        $hWnd = GUICtrlGetHandle($hWnd)
    EndIf
    If _WinAPI_GetClassName($hWnd) = 'Button' Then
        Local $iLong = _WinAPI_GetWindowLong($hWnd, $GWL_STYLE)
        Return (BitAND($iLong, $BS_RADIOBUTTON) = $BS_RADIOBUTTON Or BitAND($iLong, $BS_AUTORADIOBUTTON) = $BS_AUTORADIOBUTTON)
    EndIf
    Return False
EndFunc   ;==>_IsRadio

_IsSlider() ~ Author - guinness

; Check if a variable is referencing a Slider control.

#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iSlider = GUICtrlCreateSlider(0, 0, 500, 20)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsSlider($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsSlider(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt Slider ID: ' & _IsSlider($iSlider) & @CRLF & _
            'AutoIt Slider Handle: ' & _IsSlider(GUICtrlGetHandle($iSlider)) & @CRLF)

    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsSlider($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'msctls_trackbar32'
EndFunc   ;==>_IsSlider

_IsTab() ~ Author - guinness

; Check if a variable is referencing a Tab control.

#include <GUITab.au3>
#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iTab = GUICtrlCreateTab(0, 0, 500, 500)
    Local $hTab = _GUICtrlTab_Create($hGUI, 0, 0, 500, 500)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsTab($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsTab(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt Tab ID: ' & _IsTab($iTab) & @CRLF & _
            'AutoIt Tab Handle: ' & _IsTab(GUICtrlGetHandle($iTab)) & @CRLF & _
            'Tab UDF Handle: ' & _IsTab($hTab) & @CRLF)

    _GUICtrlTab_Destroy($hTab)
    Return GUIDelete($hGUI)
EndFunc   ;==>Example

Func _IsTab($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'SysTabControl32'
EndFunc   ;==>_IsTab

_IsTreeView() ~ Author - guinness

; Check if a variable is referencing a TreeView control.

#include <GUITreeView.au3>
#include <WinAPI.au3>
Example()

Func Example()
    Local $hGUI = GUICreate('')
    Local $iLabel = GUICtrlCreateLabel('', 0, 0, 500, 500)
    Local $iTreeView = GUICtrlCreateTreeView(0, 0, 500, 500)
    Local $hTreeView = _GUICtrlTreeView_Create($hGUI, 'Example', 0, 0, 500, 500)
    GUISetState(@SW_SHOW, $hGUI)

    MsgBox(4096, '', 'AutoIt Label ID: ' & _IsTreeView($iLabel) & @CRLF & _
            'AutoIt Label Handle: ' & _IsTreeView(GUICtrlGetHandle($iLabel)) & @CRLF & _
            'AutoIt TreeView ID: ' & _IsTreeView($iTreeView) & @CRLF & _
            'AutoIt TreeView Handle: ' & _IsTreeView(GUICtrlGetHandle($iTreeView)) & @CRLF & _
            'TreeView UDF Handle: ' & _IsTreeView($hTreeView) & @CRLF)

    _GUICtrlTreeView_Destroy($hTreeView)
    Return GUIDelete($hGUI)
EndFunc   ;==>Example


Func _IsTreeView($hWnd)
    Return _WinAPI_GetClassName($hWnd) = 'SysTreeView32'
EndFunc   ;==>_IsTreeView

Move Entire Screen Across ~ Author - Siao

#include <WindowsConstants.au3>
#include <WinAPI.au3>

$hScreenDC = _WinAPI_GetWindowDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScreenDC)
$hMemBMP = _WinAPI_CreateCompatibleBitmap($hScreenDC, @DesktopWidth*2, @DesktopHeight)
_WinAPI_DeleteObject(_WinAPI_SelectObject($hMemDC, $hMemBMP))
_WinAPI_BitBlt($hMemDC, 0, 0, @DesktopWidth, @DesktopHeight, $hScreenDC, 0, 0, $SRCCOPY)
_WinAPI_BitBlt($hMemDC, @DesktopWidth, 0, @DesktopWidth, @DesktopHeight, $hScreenDC, 0, 0, $SRCCOPY)

For $i = @DesktopWidth To 0 Step -8
    _WinAPI_BitBlt($hScreenDC, 0, 0, @DesktopWidth, @DesktopHeight, $hMemDC, $i, 0, $SRCCOPY)
    Sleep(20)
Next

_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE+$RDW_ALLCHILDREN)
_WinAPI_ReleaseDC(0, $hScreenDC)
_WinAPI_DeleteObject($hMemBMP)
_WinAPI_DeleteDC($hMemDC)

Exit

; Edited - for up/down move - Malkey

#include <WindowsConstants.au3>
#include <WinAPI.au3>

$hScreenDC = _WinAPI_GetWindowDC(0)
$hMemDC = _WinAPI_CreateCompatibleDC($hScreenDC)
$hMemBMP = _WinAPI_CreateCompatibleBitmap($hScreenDC, @DesktopWidth, @DesktopHeight*2)
_WinAPI_DeleteObject(_WinAPI_SelectObject($hMemDC, $hMemBMP))
_WinAPI_BitBlt($hMemDC, 0, 0, @DesktopWidth, @DesktopHeight, $hScreenDC, 0, 0, $SRCCOPY)
_WinAPI_BitBlt($hMemDC, 0, @DesktopHeight,  @DesktopWidth, @DesktopHeight, $hScreenDC, 0, 0, $SRCCOPY)

For $i = 0 To @DesktopHeight  Step 8 ;scroll Up
;For $i =  @DesktopHeight To 0 Step -8 ;scroll Down
    _WinAPI_BitBlt($hScreenDC, 0, 0, @DesktopWidth, @DesktopHeight, $hMemDC, 0, $i, $SRCCOPY)
    Sleep(20)
Next

_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, $RDW_INVALIDATE+$RDW_ALLCHILDREN)
_WinAPI_ReleaseDC(0, $hScreenDC)
_WinAPI_DeleteObject($hMemBMP)
_WinAPI_DeleteDC($hMemDC)

Exit

Multi-Color Changing Background ~ Author - monoceres

; Multi-Color Changing Background

#include <GUIConstantsEx.au3>

Dim $color, $redm = 1, $bluem = 2, $greenm = 3, $index

GUICreate("test")
GUISetState()

While GUIGetMsg() <> -3
    Sleep(10)
    $index += 0.01
    $color = "0x" & Hex(255 * ((Sin($index * $redm) + 1) / 2), 2) & Hex(255 * ((Sin($index * $greenm) + 1) / 2), 2) & Hex(255 * ((Sin($index * $bluem) + 1) / 2), 2)
    GUISetBkColor($color)
WEnd

_SetPNGIntoPicControl() ~ Author - monoscout999

#include <GDIPlus.au3>
#include <Constants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>

Global Const $SC_MOVE = 0xF010
Global Const $STM_SETIMAGE = 0x172

; This Is For Getting The PNG From a URL
$PngFile = @ScriptDir & "\MyPNG.png"
$Inet = InetGet("http://img26.imageshack.us/img26/7439/boton3p.png", $PngFile)

;Here is the GUI creation
$hGUI = GUICreate("PNG Pic by monoscout999")
GUISetBkColor(0x123456, $hGUI)
$Pic = GUICtrlCreatePic("", 10, 10, 50, 50)
_SetPNGIntoPicControl($Pic, $PngFile)
GUISetState()

While True
	$msg = GUIGetMsg()
	Switch $msg
		Case -3
			Exit
		Case $GUI_EVENT_PRIMARYDOWN
			_ControlMove($Pic)
	EndSwitch
WEnd

; Here is the function declared
Func _SetPNGIntoPicControl($iPic, $sPNGFile)
	_GDIPlus_Startup()
	Local $hImage = _GDIPlus_ImageLoadFromFile($sPNGFile)
	Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
	_WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap))
	_WinAPI_DeleteObject($hBitmap)
	_GDIPlus_ImageDispose($hImage)
	_GDIPlus_Shutdown()
EndFunc   ;==>_SetPNGIntoPicControl

Func _ControlMove($cID)
	Local $aCurPos = GUIGetCursorInfo()
	If @error Then Return False
	If $aCurPos[4] = $cID Then
		GUICtrlSendMsg($cID, $WM_SYSCOMMAND, BitOR($SC_MOVE, $HTCAPTION), 0)
	EndIf
EndFunc   ;==>_ControlMove

_SwitchColor() ~ Author - RazerM

; Switch BGR to RGB and vice versa

ConsoleWrite(0xFF0000 = SwitchColor(0x0000FF) & @CRLF)

Func _SwitchColor($iColor)
    Local $iMask
    $iMask = BitXOR(BitAND($iColor, 0xFF) , ($iColor / 0x10000))
    Return BitXOR($iColor, ($iMask * 0x10001))
EndFunc   ;==>_SwitchColor()

_XPStyle() ~ Authors - Valuater ~ GaryFrost

; XP Style For Colours

#include <GuiConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $XS_n, $x = 0
Global $gui = GuiCreate("MyGUI", 350, 42,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
 _XPStyle(1)
Local $Pic_1 = GUICtrlCreateLabel("", 10, 10, 340, 20)
GUICtrlSetBkColor($Pic_1,0xff0000) ;Red
Local $Label_2 = GuiCtrlCreateLabel("", 10, 10, 340, 20)
Local $Label_3 = GUICtrlCreateLabel("", 10, 13, 5, 15, $SS_CENTER)
GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT )
 _XPStyle(0)

GuiSetState()
do
    Local $msg = GuiGetMsg()
    if $msg = $GUI_EVENT_CLOSE then ExitLoop
    Local $pos = ControlGetPos($gui,"",$Label_2)
    if $pos[0] < 340 then
        GUICtrlSetPos($Label_2,$pos[0]+((360/100)*1),10)
        GUICtrlSetPos($Label_3, 10, 13, $pos[0]+((360/100)*1),15)
        GUICtrlSetData( $Label_3, int($pos[0]+((360/100)*1)) & "%")
    EndIf
    Sleep(20)
    if $x = 0 then
        if $pos[0] > 339.9 then
            MsgBox(0,"test","Done!")
            $x = 1
        EndIf
    EndIf
    $msg = GuiGetMsg()
    if $msg = $GUI_EVENT_CLOSE then Exit
until $msg = $GUI_EVENT_CLOSE

 Func _XPStyle($OnOff = 1)
    If $OnOff And StringInStr(@OSTYPE, "WIN32_NT") Then
        $XS_n = DllCall("uxtheme.dll", "int", "GetThemeAppProperties")
        DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", 0)
        Return 1
    ElseIf StringInStr(@OSTYPE, "WIN32_NT") And IsArray($XS_n) Then
        DllCall("uxtheme.dll", "none", "SetThemeAppProperties", "int", $XS_n[0])
        $XS_n = ""
        Return 1
    EndIf
    Return 0
EndFunc   ;==>_XPStyle