failedtocompile Posted November 17, 2010 Share Posted November 17, 2010 Hi guys, Anyone able to point me in the right direction on what function i could use for when a button is pressed in an autoit created gui that it will display the file in the gui. Pretty much a need a next button and a previous button and the files will be image files. Just a warning I am nervers around arrays so speak slowley I have a basic layout shown below: expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiToolTip.au3> #include <constants.au3> $Wallpaper = "Path to directory" ;(iniread) $Currentfile = "Current image file that is displayed in gui" $GUI = GUICreate("", 500, 375, Default, Default, $WS_POPUPWINDOW) $GuiPIC = GUICtrlCreatePic($Wallpaper, 0, 0, 500, 375, $WS_EX_TRANSPARENT) $Label1 = GUICtrlCreateLabel("Set This Image as Wallpaper", 192, 344, 140, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label2 = GUICtrlCreateLabel("Previous Image", 16, 344, 77, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label3 = GUICtrlCreateLabel("Next Image", 416, 344, 58, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Label1 MsgBox(0, "", "Set Wallpaper function") _SetWallpaper() Case $msg = $Label2 MsgBox(0, "", "test") EndSelect WEnd Func _SetWallpaper() RegWrite ("HKEY_CURRENT_USER\Control Panel\Desktop", "ConvertedWallpaper", "Reg_SZ", $Wallpaper) RegWrite("HKCU\Control Panel\Desktop", "Wallpaper", "REG_SZ", $Wallpaper) RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "REG_SZ", "2") sleep(30) Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters ,1 ,True") ;Refreshes users desktop sleep(30) Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters ,1 ,True") Refreshes users desktop EndFunc Func _Next() EndFunc Func _Previous() EndFunc #cs ; Loop until user exits Do Until GUIGetMsg() = $GUI_EVENT_CLOSE GUIDelete() ;GUICTRLSETIMAGE() #CE thanks in advance Link to comment Share on other sites More sharing options...
water Posted November 17, 2010 Share Posted November 17, 2010 I would use _FileListToArray($sPath [, $sFilter = "*" [, $iFlag = 0]]) to fill an array. The next / previous button then increment / decrement the index. My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
wakillon Posted November 17, 2010 Share Posted November 17, 2010 Hi guys, Anyone able to point me in the right direction on what function i could use for when a button is pressed in an autoit created gui that it will display the file in the gui. Pretty much a need a next button and a previous button and the files will be image files. Just a warning I am nervers around arrays so speak slowley I have a basic layout shown below: thanks in advance Something like this ? expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiToolTip.au3> #include <constants.au3> #include <Math.au3> #include <File.au3> #Include <GDIPlus.au3> Global $_I=1 Global $WallpaperDirectory = @WindowsDir & '\Web\Wallpaper' ; choose a directory Global $WallpaperArray = _FileListToArray ( $WallpaperDirectory ) Global $GUI = GUICreate("", 500, 375, Default, Default, $WS_POPUPWINDOW) Global $GuiCtrlPic = GUICtrlCreatePic($WallpaperDirectory & '\' & $WallpaperArray[1], 0, 0, 500, 375, $WS_EX_TRANSPARENT) $Label1 = GUICtrlCreateLabel("Set This Image as Wallpaper", 182, 344, 140, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label2 = GUICtrlCreateLabel("Previous Image", 16, 344, 77, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label3 = GUICtrlCreateLabel("Next Image", 416, 344, 58, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Label1 _SetWallpaper ( $WallpaperDirectory & '\' & $WallpaperArray[$_I] ) Case $msg = $Label2 _Previous ( ) Case $msg = $Label3 _Next ( ) EndSelect WEnd Func _Next ( ) $_I=$_I+1 $_I = _Max ( _Min ( $_I, UBound ( $WallpaperArray ) -1 ), 1 ) ConsoleWrite ( $_I & " next : " & $WallpaperDirectory & '\' & $WallpaperArray[$_I] & @Crlf ) GUICtrlSetImage ( $GuiCtrlPic, $WallpaperDirectory & '\' & $WallpaperArray[$_I] ) EndFunc Func _Previous ( ) $_I=$_I-1 $_I = _Max ( _Min ( $_I, UBound ( $WallpaperArray ) -1 ), 1 ) ConsoleWrite ( $_I & " previous : " & $WallpaperDirectory & '\' & $WallpaperArray[$_I] & @Crlf ) GUICtrlSetImage ( $GuiCtrlPic, $WallpaperDirectory & '\' & $WallpaperArray[$_I] ) EndFunc Func _SetWallPaper ( $_WallPaperPath ) If Not FileExists ( $_WallPaperPath ) Then Return $_StringReplace = StringReplace ( $_WallPaperPath, ".jpg", ".bmp" ) If @extended Then _GDIPlus_Startup ( ) $_ImageLoad = _GDIPlus_ImageLoadFromFile ( $_WallPaperPath ) $_CLSID = _GDIPlus_EncodersGetCLSID ( "BMP" ) _GDIPlus_ImageSaveToFileEx ( $_ImageLoad, $_StringReplace, $_CLSID ) _GDIPlus_ShutDown ( ) $_WallPaperPath = $_StringReplace EndIf RegWrite ( "HKEY_CURRENT_USER\\Control Panel\\Desktop", "TileWallPaper", "REG_SZ", 0 ) RegWrite ( "HKEY_CURRENT_USER\\Control Panel\\Desktop", "WallpaperStyle", "REG_SZ", 2 ) DllCall ( "user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $_WallPaperPath, "int", BitOR ( 1, 2 ) ) EndFunc ;==> _SetWallPaper ( ) AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Link to comment Share on other sites More sharing options...
failedtocompile Posted November 17, 2010 Author Share Posted November 17, 2010 I would use _FileListToArray($sPath [, $sFilter = "*" [, $iFlag = 0]]) to fill an array. The next / previous button then increment / decrement the index. Thanks for your response Water, But how would i Read from each index in the array, I have looked at _FileWriteFromArray but not sure how I can formulate it so it knew what index it was up to so when previous button is pressed it would descend back through the index and vice versa when pressing Next Button. So if i was at image 5 of 20 images and i press previous it would display image 4. I am a complete Beginner with Arrays I had a look at the Wiki but was unable to find how to navigate through a created array and siaplying a single record. Thanks in advance Link to comment Share on other sites More sharing options...
water Posted November 17, 2010 Share Posted November 17, 2010 This should work: expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiToolTip.au3> #include <constants.au3> #include <file.au3> $Wallpaper = "C:\temp" ;(iniread) Global $iPicIndex = 3 $aPics = _FileListToArray($Wallpaper, "*.jpg", 1) If @error <> 0 Then MsgBox(16, "Wallpaper Selection", "No Wallpapers available") Exit EndIf $Currentfile = "Current image file that is displayed in gui" $GUI = GUICreate("", 500, 375, Default, Default, $WS_POPUPWINDOW) $GuiPIC = GUICtrlCreatePic($aPics[$iPicIndex], 0, 0, 500, 375, $WS_EX_TRANSPARENT) ; Display first picture $Label1 = GUICtrlCreateLabel("Set This Image as Wallpaper", 192, 344, 140, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label2 = GUICtrlCreateLabel("Previous Image", 16, 344, 77, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label3 = GUICtrlCreateLabel("Next Image", 416, 344, 58, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Label1 MsgBox(0, "", "Set Wallpaper function") _SetWallpaper() Case $msg = $Label2 If $iPicIndex > 1 Then $iPicIndex = $iPicIndex - 1 GUICtrlSetImage($GuiPIC, $aPics[$iPicIndex]) ; Display selected picture Case $msg = $Label3 If $iPicIndex < Number($aPics[0])-1 Then $iPicIndex = $iPicIndex + 1 GUICtrlSetImage($GuiPIC, $aPics[$iPicIndex]) ; Display selected picture EndSelect WEnd Func _SetWallpaper() RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "ConvertedWallpaper", "Reg_SZ", $Wallpaper) RegWrite("HKCU\Control Panel\Desktop", "Wallpaper", "REG_SZ", $Wallpaper) RegWrite("HKEY_CURRENT_USER\Control Panel\Desktop", "WallpaperStyle", "REG_SZ", "2") Sleep(30) Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters ,1 ,True") ;Refreshes users desktop Sleep(30) Run("RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters ,1 ,True") ; Refreshes users desktop EndFunc ;==>_SetWallpaper My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
failedtocompile Posted November 17, 2010 Author Share Posted November 17, 2010 Something like this ? expandcollapse popup#include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include <GuiToolTip.au3> #include <constants.au3> #include <Math.au3> #include <File.au3> #Include <GDIPlus.au3> Global $_I=1 Global $WallpaperDirectory = @WindowsDir & '\Web\Wallpaper' ; choose a directory Global $WallpaperArray = _FileListToArray ( $WallpaperDirectory ) Global $GUI = GUICreate("", 500, 375, Default, Default, $WS_POPUPWINDOW) Global $GuiCtrlPic = GUICtrlCreatePic($WallpaperDirectory & '\' & $WallpaperArray[1], 0, 0, 500, 375, $WS_EX_TRANSPARENT) $Label1 = GUICtrlCreateLabel("Set This Image as Wallpaper", 182, 344, 140, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label2 = GUICtrlCreateLabel("Previous Image", 16, 344, 77, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) $Label3 = GUICtrlCreateLabel("Next Image", 416, 344, 58, 17) GUICtrlSetColor(-1, 0xff0000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) GUICtrlSetCursor(-1, 0) GUISetState(@SW_SHOW) While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Label1 _SetWallpaper ( $WallpaperDirectory & '\' & $WallpaperArray[$_I] ) Case $msg = $Label2 _Previous ( ) Case $msg = $Label3 _Next ( ) EndSelect WEnd Func _Next ( ) $_I=$_I+1 $_I = _Max ( _Min ( $_I, UBound ( $WallpaperArray ) -1 ), 1 ) ConsoleWrite ( $_I & " next : " & $WallpaperDirectory & '\' & $WallpaperArray[$_I] & @Crlf ) GUICtrlSetImage ( $GuiCtrlPic, $WallpaperDirectory & '\' & $WallpaperArray[$_I] ) EndFunc Func _Previous ( ) $_I=$_I-1 $_I = _Max ( _Min ( $_I, UBound ( $WallpaperArray ) -1 ), 1 ) ConsoleWrite ( $_I & " previous : " & $WallpaperDirectory & '\' & $WallpaperArray[$_I] & @Crlf ) GUICtrlSetImage ( $GuiCtrlPic, $WallpaperDirectory & '\' & $WallpaperArray[$_I] ) EndFunc Func _SetWallPaper ( $_WallPaperPath ) If Not FileExists ( $_WallPaperPath ) Then Return $_StringReplace = StringReplace ( $_WallPaperPath, ".jpg", ".bmp" ) If @extended Then _GDIPlus_Startup ( ) $_ImageLoad = _GDIPlus_ImageLoadFromFile ( $_WallPaperPath ) $_CLSID = _GDIPlus_EncodersGetCLSID ( "BMP" ) _GDIPlus_ImageSaveToFileEx ( $_ImageLoad, $_StringReplace, $_CLSID ) _GDIPlus_ShutDown ( ) $_WallPaperPath = $_StringReplace EndIf RegWrite ( "HKEY_CURRENT_USER\\Control Panel\\Desktop", "TileWallPaper", "REG_SZ", 0 ) RegWrite ( "HKEY_CURRENT_USER\\Control Panel\\Desktop", "WallpaperStyle", "REG_SZ", 2 ) DllCall ( "user32.dll", "int", "SystemParametersInfo", "int", 20, "int", 0, "str", $_WallPaperPath, "int", BitOR ( 1, 2 ) ) EndFunc ;==> _SetWallPaper ( ) Gewiz wakillon, That is exactly what i was looking for, and I think I wouldnt of come to such a neat clean script for weeks. thank you so much. Regards FTC Link to comment Share on other sites More sharing options...
wakillon Posted November 17, 2010 Share Posted November 17, 2010 Gewiz wakillon,That is exactly what i was looking for, and I think I wouldnt of come to such a neat clean script for weeks.thank you so much.RegardsFTCGlad to help you ! AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts 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