Snippets ( Graphics )

From AutoIt Wiki
Revision as of 15:10, 12 November 2012 by IEvKI3gv9Wrkd41u (talk | contribs) (+Snippets Category (+ normalize top))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Please always credit an author in your script if you use their code. It is 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