IanN1990 Posted November 25, 2011 Posted November 25, 2011 (edited) Heya, When is started Auto it was just a small thing so performance didn't really matter. Now my personal system.exe is entering over 500 lines of code . It uses If statements check for effects and run actions accordingly, mousepos checks *to show programs or startbar* and hotkeys. Now it uses a sleep(50) in the while, to not take all up the cpu "when i check task manger its normally on 00 or 01" but still acts fast. So my question is, there is a computering standard or way of improving performance ? Edited April 14, 2012 by IanN1990
water Posted November 25, 2011 Posted November 25, 2011 The way to improve performance isIdentify if performance improvement is necessary. If your script runs fast enough (means your users are happy with the performance) leave it alone (never change a running system)Measure your current performance. Identify what to measure (overall performance, file I/O ...)Identify the most expensive operations of your scriptTry to improve one of these operationsMeasure performance improvementImprove next operation My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
guinness Posted November 25, 2011 Posted November 25, 2011 It really depends on the nature of your script, but some of the best practices I try to adhere to are the following: 1. Declare variables outside of a loop.2. Try to create arrays using index 0 as the total number of items. (I've been told that the larger the array the slower Ubound() can be.)3. Use TimerInt/TimerDiff instead of Sleep, as this just pauses the Script. But with using TimerInt/TimerDiiff in a loop I can also watch (for example) when the $GUI_EVENT_CLOSE message is intercepted by GUIGetMsg().4. Declare variables in the correct scope.5. I'm sure more examples will come to mind ...Note: Just because I do this doesn't mean everyone else does. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
Moderators Melba23 Posted November 25, 2011 Moderators Posted November 25, 2011 IanN1990, Bowmore's Profiler worked very well showing you which parts of your script were taking the most time and so which were worth optimising. I have not used it for a while so it might need updating, but it proved useful when I did. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
water Posted November 25, 2011 Posted November 25, 2011 (edited) In my opinion TimerInt/Timerdiff doesn't help you to reduce CPU consumption. You just start a timer and measure the elapsed time. You need to use "Sleep". I think what guinness means is AdlibRegister. Edited November 25, 2011 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
IanN1990 Posted November 25, 2011 Author Posted November 25, 2011 (edited) @Melba23 Thanks for the link i shall have to try that out tool later on @Guinness Thanks for TimerInit over sleep, something like is really useful "like using hotkeys over Keypresses" Edit* First time round i used "_Timer_Init" instead of "TimerInit" which is why the cpu was 25, was my silly mistake Edited November 25, 2011 by IanN1990
water Posted November 25, 2011 Posted November 25, 2011 I'm a bit curious. Could you please post the code you use with TimerInit/TimerDiff in a loop without using all CPU? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
water Posted November 25, 2011 Posted November 25, 2011 I remembered that AutoIt itself avoids too much CPU consumption. After some searching/reading I found this: Basic MessageLoop Format The general layout of MessageLoop code is: While 1 $msg = GUIGetMsg() ... ... WEnd Usually a tight loop like the one shown would send the CPU to 100% - fortunately the GUIGetMsg function automatically idles the CPU when there are no events waiting. Do not put a manual sleep in the loop for fear of stressing the CPU - this will only cause the GUI to become unresponsive. In a loop where you have a GUIGetMsg statement an additional Sleep statement will SLOW DOWN your script! My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
guinness Posted November 25, 2011 Posted November 25, 2011 (edited) water makes a valid point, it's one of those things you have to ask yourself do you want performance i.e. low CPU, RAM VS. efficiency. For example using Sleep for 1 minute is probably not a smart move when using GUI's and waiting for button clicks etc... Example as requested by IanN1990: _Example_1() _Example_2() Func _Example_1() ConsoleWrite("Started: _Example_1()" & @LF) Local $iTimerInt = TimerInit() While 1 Sleep(10) If TimerDiff($iTimerInt) > 300 Then ; Greater than 300ms. ExitLoop ; Exit the loop. EndIf WEnd ConsoleWrite("300ms elapsed." & @LF) EndFunc ;==>_Example_1 Func _Example_2() ConsoleWrite("Started: _Example_2()" & @LF) Sleep(300) ConsoleWrite("300ms elapsed." & @LF) EndFunc ;==>_Example_2 Edited November 25, 2011 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
Zedna Posted November 25, 2011 Posted November 25, 2011 Now it uses a sleep(50) in the while, to not take all up the cpu "when i check task manger its normally on 00 or 01" but still acts fast. way of improving performance ?Decrease Sleep(50) to Sleep(10) or something like this ...Also post your code to get more help. Resources UDF ResourcesEx UDF AutoIt Forum Search
water Posted November 25, 2011 Posted November 25, 2011 Func _Example_2() ConsoleWrite("Started: _Example_2()" & @LF) While 1 Sleep(300) ExitLoop WEnd ConsoleWrite("300ms elapsed." & @LF) EndFunc ;==>_Example_2Why do you use a While in your second example? This should be enough. Func _Example_2() ConsoleWrite("Started: _Example_2()" & @LF) Sleep(300) ConsoleWrite("300ms elapsed." & @LF) EndFunc ;==>_Example_2 My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
IanN1990 Posted November 25, 2011 Author Posted November 25, 2011 (edited) Hmm well my code is rather big, but mostly copy/paste of functional points with different names so i could paste those points and get ur view if they r ineffective or not. All of these are within the main While 1, Sleep(50), Wend A. When steam launches a game, it hides the ulgy "steam is launching game" window WinSetState('- Steam','',@SW_HIDE) B. Checks to see if any steam chat window is hidden, and restores it $state = WinGetState("- Chat", "") If BitAnd($state, 16) Then WinSetState("- Chat","",@SW_RESTORE) EndIf C. Shows hides taskbar depending on mouse location $pos = MouseGetPos() if $pos[0] >= 1921 and $pos[1] <=2 Then $active=1 ElseIf $pos[0] <= 3840 and $pos[1] >=45 Then $active=0 EndIf if $active=1 and $on=0 then $on=1 sleep(125) $pos = MouseGetPos() if $pos[0] >= 1921 and $pos[1] <=1 Then _ShowTaskBar(0) EndIf endif $state = WinGetState("[Class:TaskListThumbnailWnd]", "") if WinActive("Start menu") or WinActive("[Class:TaskListThumbnailWnd]") or WinActive("{Class:NotifyIconOverflowWindow]") or BitAnd($state, 2) Then $status=1 Else $status=0 EndIf if $active=0 and $on=1 and $status=0 then $on=0 sleep(550) _ShowTaskBar(1) endif D. Checks if a process is active, and runs a exe once until that exe is closed ;KMPlayer Media Player Code if ProcessExists("KMPlayer.exe") Then $KmplayerActive=1 else $KmplayerSecondary=0 $KmplayerActive=0 $MediaPlayer=0 EndIf if $KmplayerActive=1 and $KmplayerSecondary=0 then Run ("C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftKmplayer flash.exe") $KmplayerSecondary=1 EndIf Edited November 25, 2011 by IanN1990
guinness Posted November 25, 2011 Posted November 25, 2011 (edited) I would advise not to mention the 'G' word in the future. I haven't reported because it doesn't look as though you're breaking the rules, but just for the future.Why do you use a While in your second example? This should be enough.Purely for the purposes of the example, though looking back probably not one of the best to showcase Sleep. You're right water. Edited November 25, 2011 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
IanN1990 Posted November 25, 2011 Author Posted November 25, 2011 (edited) hm ok i have read the site rules and i didn't think what i said was wrong ? as its just hiding a popup ? If i am mistaken i do apologize That aside, is my coding ok ? have i left anything in there that could be removed or improved for better performance ? Edited November 25, 2011 by IanN1990
AdmiralAlkex Posted November 25, 2011 Posted November 25, 2011 Spending the whole cpu just on a TimerDiff() seems like a waste. Func _Example_1() ConsoleWrite("Started: _Example_1()" & @LF) Local $iTimerInt = TimerInit() While 1 Sleep(10) If TimerDiff($iTimerInt) > 300 Then ; Greater than 300ms. ExitLoop ; Exit the loop. EndIf WEnd ConsoleWrite("300ms elapsed." & @LF) EndFunc ;==>_Example_1 That's better. .Some of my scripts: ShiftER, Codec-Control, Resolution switcher for HTC ShiftSome of my UDFs: SDL UDF, SetDefaultDllDirectories, Converting GDI+ Bitmap/Image to SDL Surface
guinness Posted November 25, 2011 Posted November 25, 2011 Today is clearly not my day. Thanks AdmiralAlkex, I've updated the previous example. UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018
IanN1990 Posted November 25, 2011 Author Posted November 25, 2011 hell of some code there i used sleep 1, with timer 1 vs sleep 2. The timer was using 0 cpu while the sleep(2) was using 2/3 cpu very impressive
Valik Posted November 25, 2011 Posted November 25, 2011 (edited) It was requested I review this thread because of the mention of Steam and launching a game. I see nothing wrong with the thread. This is about hiding/showing Steam windows from what I gather in a quick skim. Edited November 25, 2011 by Valik
Shaggi Posted November 26, 2011 Posted November 26, 2011 If you're monitoring a whole system, you wanna look into events, callbacks and hooking - instead of polling every single case you might need. That is pretty much programming 101. Ever wanted to call functions in another process? ProcessCall UDFConsole stuff: Console UDFC Preprocessor for AutoIt OMG
IanN1990 Posted November 26, 2011 Author Posted November 26, 2011 (edited) I have no idea what any of that means but i did go though my code and reduce it from around 500 lines+ with 20+ variables to around 200 lines and 7 variables expandcollapse popup#NoTrayIcon #include <Misc.au3> #Include <WinAPI.au3> Opt('WinTitleMatchMode', 2 ) HotKeySet("{MEDIA_PlAY_PAUSE}", "_Play") HotKeySet("{MEDIA_NEXT}", "_Next") HotKeySet("{MEDIA_PREV}", "_Prev") HotKeySet("{MEDIA_STOP}", "_Stop") HotKeySet("{VOLUME_MUTE}", "_Mute") HotKeySet("{SCROLLLOCK}", "_ScrollLock") HotKeySet("{PAUSE}", "_Pause") HotKeySet("^{F12}", "_F12") local $Sound=0 local $MediaPlayer=0 local $KMPlayer=0 local $ChatHover local $TaskbarHover local $Taskbar local $TaskbarExtra=0 Global Const $WM_QUERYENDSESSION = 0x0011 GUICreate('') GUIRegisterMsg($WM_QUERYENDSESSION, 'WM_QUERYENDSESSION') While 1 sleep(100) ;Hide Steam Lauching WinSetState('- Steam','',@SW_HIDE) ;Show Chat Messages $Steam = WinGetState("- Chat", "") $MsN = WinGetState("[Class:TConversationForm]", "") $Skype = WinGetState("[Class:IMWindowClass]", "") If BitAnd($Steam, 16) Then WinSetState("- Chat","",@SW_RESTORE) elseif BitAnd($MsN, 16) Then WinSetState("[Class:TConversationForm]","",@SW_RESTORE) ElseIf BitAnd($Skype, 16) Then WinSetState("[Class:IMWindowClass]","",@SW_RESTORE) EndIf ;Show Taskbar $pos = MouseGetPos() if $pos[0] >= 1921 and $pos[1] <=2 Then $TaskbarHover=1 ElseIf $pos[0] <= 3840 and $pos[1] >=45 Then $TaskbarHover=0 EndIf if $TaskbarHover=1 and $Taskbar=0 then $Taskbar=1 sleep(75) $pos = MouseGetPos() if $pos[0] >= 1921 and $pos[1] <=1 Then _ShowTaskBar(0) EndIf endif $Thumbnail = WinGetState("[Class:TaskListThumbnailWnd]", "") $Nofication = WinGetState("[Class:NotifyIconOverflowWindow]", "") if WinActive("Start menu") or WinActive("[Class:TaskListThumbnailWnd]") or BitAnd($Thumbnail, 2) or BitAnd($Nofication, 2) Then $TaskbarExtra=1 Else $TaskbarExtra=0 EndIf if $TaskbarHover=0 and $Taskbar=1 and $TaskbarExtra=0 then $Taskbar=0 sleep(75) _ShowTaskBar(1) Endif ;Chat Hover $pos = MouseGetPos() if $pos[0] <= -1880 and $pos[1] <=360 Then sleep(75) $pos = MouseGetPos() if $pos[0] <= -1880 and $pos[1] <=360 and $ChatHover=0 Then $ChatHover=1 WinActivate("Windows Live Messenger") EndIf elseif $pos[0] <= -1880 and $pos[1] <=720 and $pos[1] >=360 Then sleep(75) $pos = MouseGetPos() if $pos[0] <= -1880 and $pos[1] <=720 and $pos[1] >=360 and $ChatHover=0 Then $ChatHover=1 WinActivate("Friends") EndIf elseif $pos[0] <= -1880 and $pos[1] >=720 and $pos[1] <=1080 Then sleep(75) $pos = MouseGetPos() if $pos[0] <= -1880 and $pos[1] >=720 and $pos[1] <=1080 and $ChatHover=0 Then $ChatHover=1 WinActivate("Skype™ - lann1990") EndIf Else If $pos[0] >= -1700 and $ChatHover=1 Then $ChatHover=0 WinSetState("Windows Live Messenger","",@SW_MINIMIZE) WinSetState("Skype™ - lann1990","",@SW_MINIMIZE) WinSetState("Friends","",@SW_MINIMIZE) Endif EndIf ;KMPlayer Media Player Code if ProcessExists("KMPlayer.exe") Then if $KMPlayer=0 then $KMPlayer=1 Run ("C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftKmplayer flash.exe") EndIf else if $KMPlayer=1 then $KMPlayer=0 EndIf EndIf WEnd ; Functions Func _ScrollLock() ; Add here what you want to happen when you push the SCROLLLOCK key. send("^{Printscreen}") HotKeySet("{SCROLLLOCK}") ; Disable HotKeySet. Send("{SCROLLLOCK off}") ; Two Sends() seem to work. Send("{SCROLLLOCK off}") HotKeySet("{SCROLLLOCK}", "_ScrollLock") ; Enable HotKeySet. EndFunc ;==>_ScrollLock Func _Pause() ; Add here what you want to happen when you push the SCROLLLOCK key. RunWait('wscript.exe "C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftOperating SystemLogOff.vbs"') EndFunc ;==>_ScrollLock Func _F12() if $Sound=0 Then $Sound=1 run("C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftWireless.exe") else $Sound=0 run("C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftMain.exe") EndIf EndFunc Func _Play() ; if $MediaPlayer = 1 then HotKeySet("{MEDIA_PlAY_PAUSE}") ; Disable HotKeySet. SendKeepActive("[Class:Winamp v1.x]") Send("{SPACE}") HotKeySet("{MEDIA_PlAY_PAUSE}", "_Fullscreen") ; Enable HotKeySet. sleep(1000) HotKeySet("{MEDIA_PlAY_PAUSE}", "_Play") ; Enable HotKeySet. Else HotKeySet("{MEDIA_PlAY_PAUSE}") ; Disable HotKeySet. Send("{MEDIA_PlAY_PAUSE}") HotKeySet("{MEDIA_PlAY_PAUSE}", "_Play") ; Enable HotKeySet. EndIf EndFunc Func _Fullscreen() ; if $MediaPlayer = 1 then SendKeepActive("[Class:Winamp v1.x]") Send("{SPACE}") Send("{ENTER}") HotKeySet("{MEDIA_PlAY_PAUSE}", "_Play") ; Enable HotKeySet. EndIf EndFunc Func _Next() ; if $MediaPlayer = 1 then HotKeySet("{MEDIA_NEXT}") ; Disable HotKeySet. SendKeepActive("[Class:Winamp v1.x]") Send("^{RIGHT}") HotKeySet("{MEDIA_NEXT}", "_NextTrack") ; Disable HotKeySet. sleep(250) HotKeySet("{MEDIA_NEXT}", "_Next") ; EnableHotKeySet. Else HotKeySet("{MEDIA_NEXT}") ; Enable HotKeySet. send("{MEDIA_NEXT}") HotKeySet("{MEDIA_NEXT}", "_Next") ; EnableHotKeySet. EndIf EndFunc Func _NextTrack() ; if $MediaPlayer = 1 then SendKeepActive("[Class:Winamp v1.x]") Send("{PGDN}") HotKeySet("{MEDIA_NEXT}", "_Next") ; Disable HotKeySet. EndIf EndFunc Func _Prev() ; if $MediaPlayer = 1 then HotKeySet("{MEDIA_PREV}") ; Disable HotKeySet. SendKeepActive("[Class:Winamp v1.x]") Send("^{LEFT}") HotKeySet("{MEDIA_PREV}", "_PrevTrack") ; Disable HotKeySet. Sleep(250) HotKeySet("{MEDIA_PREV}", "_Prev") ; Disable HotKeySet. Else HotKeySet("{MEDIA_PREV}") ; Enable HotKeySet. send("{MEDIA_PREV}") HotKeySet("{MEDIA_PREV}", "_Next") ; EnableHotKeySet. EndIf EndFunc Func _PrevTrack() ; if $MediaPlayer = 1 then SendKeepActive("[Class:Winamp v1.x]") Send("{PGUP}") HotKeySet("{MEDIA_PREV}", "_Prev") ; Disable HotKeySet. EndIf EndFunc Func _Stop() ; if $MediaPlayer=1 Then $MediaPlayer = 0 Else $MediaPlayer = 1 EndIf EndFunc Func _Mute() ; HotKeySet("{VOLUME_MUTE}") ; Disable HotKeySet. Send("{VOLUME_MUTE}") HotKeySet("{VOLUME_MUTE}", "_Lock") ; Disable HotKeySet. Sleep(250) HotKeySet("{VOLUME_MUTE}", "_Mute") ; Disable HotKeySet. EndFunc Func _Lock() ; HotKeySet("{VOLUME_MUTE}") ; Disable HotKeySet. Send("{VOLUME_MUTE}") RunWait('wscript.exe "C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftOperating SystemLogoff.vbs"') HotKeySet("{VOLUME_MUTE}", "_Mute") ; Disable HotKeySet. EndFunc Func WM_QUERYENDSESSION($hWnd, $iMsg, $wParam, $lParam) run('wscript.exe "C:Program Files (x86)Scripts00¦ MiscellaneousMicrosoftOperating SystemLogOff3.vbs"') ProcessClose("Steam.exe") processClose("msnmsgr.exe") EndFunc Func _ShowTaskBar($fShow) Local $hTaskBar If @OSVersion = "WIN_VISTA" or @OSVersion = "WIN_2008" or @OSVersion = "WIN_7" Then _ShowStartButton($fShow) $hTaskBar = _WinAPI_FindWindow("Shell_TrayWnd", "") If $fShow=0 Then _WinAPI_ShowWindow($hTaskBar, @SW_SHOW) Else _WinAPI_ShowWindow($hTaskBar, @SW_HIDE) EndIf EndFunc ;==>_ShowTaskBar Func _ShowStartButton($fShow ) Local $hTaskBar, $hStartButton If @OSVersion = "WIN_VISTA" or @OSVersion = "WIN_2008" or @OSVersion = "WIN_7" Then $hStartButton = _WinAPI_FindWindow("Button", "Start") Else $hTaskBar = _WinAPI_FindWindow("Shell_TrayWnd", "") $hStartButton = ControlGetHandle($hTaskBar, "", "Button1") EndIf If $fShow=0 Then _WinAPI_ShowWindow($hStartButton, @SW_SHOW) Else _WinAPI_ShowWindow($hStartButton, @SW_HIDE) EndIf EndFunc ;==> I am still very new with autoit, kinda just picked it up and started writing scripts to improve how i use my computer Edited November 26, 2011 by IanN1990
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