trosevear Posted July 22, 2013 Share Posted July 22, 2013 Hi I have a script/tool that basically sits in the system tray with a bunch of menu options on it for users, that performs various functions. I have a need to kill an annoying error window should it appear using this same tool (if possible). The issue I have is if I deploy this script on a Terminal or remote desktop server the application is constantly processing 1-5% CPU for each user running it. This creates a resource problem when you get a few users running this. I am hoping someone might have a better way to do this, or be able to explain why this is using CPU all the time and suggest a work around. Basically this code is fixing an issue where an application (Sage ACT!) displays "A generic error occured in GDI+." on a Terminal Server randomly for users. The problem is the vendor has not fixed this in 5 versions on their product. My tool works I am just trying to minimize the resource usage and have not been able to. This is a section of the code: AutoItSetOption ( "WinTitleMatchMode", 3 ) While 1 $nMsg = WinGetState ($ACTWindow) Switch $nMsg Case 0 ;do nothing Case Else WinKill($ACTWindow,"A generic error occurred in GDI+.") EndSwitch $msg = TrayGetMsg() Select Case $msg = 0 ;If $GDI Then ;If WinGetState ($ACTWindow,"A generic error occurred in GDI+.") <> 0 Then ; If _IsVisible ( $ACTWindow ) Then ; EndIf ;EndIf ContinueLoop Case $msg = $ITDefaultLoc ResetRegKey(RegRead($RegHKLM & "\SOFTWARE\ActToday","Preference Default Location"),"Preference Default Location") EndSelect Link to comment Share on other sites More sharing options...
abberration Posted July 22, 2013 Share Posted July 22, 2013 What about this? $i = 0 Do If WinExists("A generic error occurred in GDI+.") Then WinKill("A generic error occurred in GDI+.") EndIf Until $i = 1 Easy MP3 | Software Installer | Password Manager Link to comment Share on other sites More sharing options...
trosevear Posted July 22, 2013 Author Share Posted July 22, 2013 (edited) Thanks for the suggestion Polymath, (smarter and quicker code) however this yielded the same result, I have actually just created a script with the following code: While 1 If WinExists("Sage ACT!","A generic error occurred in GDI+.") Then WinKill("Sage ACT!","A generic error occurred in GDI+.") EndIf WEnd The processor on this (even on my laptop) uses 25% CPU constantly. Perhaps I am just approaching this the wrong way? Edited July 22, 2013 by trosevear Link to comment Share on other sites More sharing options...
Solution trosevear Posted July 22, 2013 Author Solution Share Posted July 22, 2013 OK, thanks to Polymath I believe I have solved this by adding a sleep. While 1 If WinExists("Sage ACT!","A generic error occurred in GDI+.") Then WinKill("Sage ACT!","A generic error occurred in GDI+.") EndIf Sleep(50) WEnd Thanks for your help. 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