4 posts in this topic
This topic is now closed to further replies.
I'm trying to automate the process of configuring the three McAfee settings seen in the image I've attached (Host IPS, Network IPS and Firewall). Clicking one of them toggles the setting and closes the menu. I want them all OFF. This script will be used on different computers so the settings might be have different initial setups.
This is my first time using AutoIt and I have very limited coding experience--mostly MATLAB. Please excuse any lack of knowledge or terminology.
So far my code is able to
1. Find the visible McAfee icon in the system tray.
2. Click the icon.
3. Send "Q" to open up the Quick Settings menu.
4. Toggle settings blindly using keystrokes.
The problem I'm having is I don't know how to "read" the status of the setting before toggling it. This means I might be switching it from Off to On by mistake,
when I should really just leave it alone.
I'm wondering a couple of things.
1. Is there an easy way to "read" the status of the setting? This would solve the problem. Part of the challenge with this overall assignment is that there doesn't
seem to be any sort of "control" built into these menus. In other words, the only thing that changes in Au3Info when you hover over different options is the
coordinates of the mouse--there aren't any unique control IDs or texts to my knowledge that differentiate between different settings or menus. I don't know how to search for text in a menu and get an index or anything like that. I've attached my code at the bottom and commented-out two ideas I had for reading the status and acting accordingly after "Send (Q)". Neither of which were fruitful.
2. Is there an alternative to the overall method I've chosen that is simpler and more robust? It seems like there must be an alternative path to these settings besides the system tray, but I don't know of any such paths. The final script is going to be used on a number of computers which may have the McAfee icon either hidden or visible in the system tray, but currently my script only works if it is visible. I haven't figured out how to access hidden icons with mouse clicks yet.
I should also mention that most of my code for step 1 (find the McAfee icon) comes from something I found online. I've stared at it for a while, and I think I know how it works, but I wouldn't have known those GUI commands existed and wouldn't have been able to write that bit of code on my own. I don't want you to overestimate my understanding of AutoIt. Sorry for the long post, just wanted to provide all the relevant info.
Any advice you can offer would be greatly appreciated! Thanks in advance.
#cs AutoIt McAfee disable #ce #Include <GuiToolBar.au3> #Include <GUIConstants.au3> Local $Array For $Element In $Array Global $hSysTray_Handle, $iSystray_ButtonNumber Global $sToolTipTitle = "McAfee status: OK" ; <<<<<<<<<<<<<<<< Enter some tooltip text for the icon you want here $iSystray_ButtonNumber = Get_Systray_Index($sToolTipTitle) If $iSystray_ButtonNumber = 0 Then MsgBox(16, "Error", "Icon not found in system tray") Exit Else Sleep(500) _GUICtrlToolbar_ClickButton($hSysTray_Handle, $iSystray_ButtonNumber, "right") EndIf Send( "Q" ) ;$DropDownHandle = Controlgethandle( "", "Host IPS - on", "") ;$text = ControlGetText( "", "Host IPS - on", "") ;If "Host IPS - on" = 1 Then ; Send( $Element ) ;EndIf Next Exit ;........ Func Get_Systray_Index($sToolTipTitle) ; Find systray handle $hSysTray_Handle = ControlGetHandle('[Class:Shell_TrayWnd]', '', '[Class:ToolbarWindow32;Instance:1]') If @error Then MsgBox(16, "Error", "System tray not found") Exit EndIf ; Get systray item count Local $iSystray_ButCount = _GUICtrlToolbar_ButtonCount($hSysTray_Handle) If $iSystray_ButCount = 0 Then MsgBox(16, "Error", "No items found in system tray") Exit EndIf ; Look for wanted tooltip For $iSystray_ButtonNumber = 0 To $iSystray_ButCount - 1 If StringInStr(_GUICtrlToolbar_GetButtonText($hSysTray_Handle, $iSystray_ButtonNumber), $sToolTipTitle) = 1 Then ExitLoop Next If $iSystray_ButtonNumber = $iSystray_ButCount Then Return 0 ; Not found Else Return $iSystray_ButtonNumber ; Found EndIf EndFunc
I didn't really know how to name the titel .. so let me explain it a bit further.
You all might know that a compiled Autoit-Exe gives an error message containing the Error and the line when it crashes. Often those messages aren't usefull because it states the line in the compiled script is not the line in your script if you have used includes. Decompiling the exe often doesn't help either. Well .. I don't want to start a discussion about the benefits of those messages.
I just want to disable them. I want my exe to just fail an crash and that's it. Nothing more. When there's an error there's an error. Autoit is the only language I have ever noticed those message boxes.
I think now you can understand me ..
Do you know any way to do this?
Some compiler options or so? Or is it that deep implemented in Autoit that it can't be removed?
Thanks for your help!
I'm using csharp with the autoitx3.
I added to my project referenced the autoit dll's. Everything was working find until I got exception say:
"Unable to load DLL 'AutoItX3_x64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)"
And I downloaded and installed the autoit and added the dll files referenced them to my project also the file name:
AutoitX3_x64.dll but for some reason I don't see this dll file in the project tried to add it as reference few times and in the References I see only two files of Autoit: AutoItX3.Assembly.dll and Interop.AutoItX3Lib.dll but for some reason it's not adding the AutoitX3_x64.dll as reference.
How should I add then the AutoitX3_x64.dll to my project ? I keep getting the exception message that it's missing.
Think this has been discussed before, but is there any way of signing a compiled script with a certificate?
Reason I ask is that some AV products keep on producing 'Generic Trojan' false positives on compiled scripts. I'm told that signing with a certificate from a trusted source might reduce this problem.
I simultanously run some threads and from time to time I have a message, that there is concurrent deadlock exception (update conflict with concurrent update). I know, that it sometimes happens, but is it possible to somehow turn off displaying messaging from Firebird? Or better somehow handle this exceptions ?