Instead of relying on the reclass information, uncomment the OutputDebugString lines, grab a copy of DbgView (https://technet.microsoft.com/en-us/library/bb896647.aspx), then run the app. The information in DbgView will tell you the class names of the windows getting focus.
Aaron -- Aaron Smith Web Development * App Development * Product Support Specialist Ai Squared * 725 Airport North Office Park, Fort Wayne, IN 46825 260-489-3671 * www.aisquared.com To insure that you receive proper support, please include all past correspondence (where applicable), and any relevant information pertinent to your situation when submitting a problem report to the Ai Squared Technical Support Team. > -----Original Message----- > From: Scripting [mailto:scripting- > [email protected]] On Behalf Of Rick > Thomas via Scripting > Sent: Thursday, March 19, 2015 4:51 AM > To: 'Window-Eyes Scripting List' > Subject: Aarons Visual Studio Script Question > > Hi: In Visual Studio 2013 Community Edition: > > I used the Reclass hot key to check out the class of the error window > grabbing focus away from the text editor: > > click error check in menu > > Focus window: Original class: > > RTaskList > > Window Style: > > 44300000 > > Above is correct but below happens when i then change anything move and > or copy and paste: > > change bad code arrow down focus goes to: > > RTaskList > > 44300000 > > Focus Should have stayed in the text editor but is grabbed by what I think is > the error list. > > Blasting through the code below if MSAA is still working properly it looks > like > this sub should stop this inadvertent speeking of the error window but it > doesnt. > > See any obvious ideas of why it may not be working in WE 9.1 but why it may > have worked in 8.4? > > You can jump to the line: > > " ElseIf windowObj.ClassName = "RTaskList" Then" > > to see the code that should handle this I think unless I am mising something. > > > > Sub OnChildFocus(windowObj) > > If Not windowObj Is Nothing Then > > If windowObj.IsValid Then > > On Error Resume Next > > ' This debug is left in on purpose > > 'OutputDebugString "@@@ IN " & windowObj.ModuleName & ":" & > windowObj.ClassName & ", " & windowObj.Name & ", " & windowObj.Title & > " > @@@" & vbCrLf > > 'OutputDebugString "@@@ IN (Parent) " & > windowObj.Parent.ModuleName & ":" & windowObj.Parent.ClassName & ", > " & windowObj.Parent.Name & ", " & windowObj.Parent.Title & " @@@" & > vbCrLf > > 'OutputDebugString "In supportedModules? " & > SO_InVBArray(supportedModules, windowObj.ModuleName) & vbCrLf > > On Error Goto 0 > > If SO_InVBArray(supportedModules, windowObj.ModuleName) Then > > ' RtNote: the correct module name is in the array. > > If windowObj.Name = "PropertyGridView" Then > > ' The Property window > > Speak myStrings("PROPERTIES") > > ' Ensure all previous hooking is disabled > > UnHookEverything > > > > ' We're going to handle all MSAA focus evens ourselves. > We'll do this by blocking focus events from Window-Eyes, and then > > ' hooking the focus events with our own event handler > > Set blockFocusEvent = > MSAAEventSource.BlockEvent(event_OBJECT_FOCUS, > ClientInformation.ApplicationProcess) > > msaaEventObjectFocus = ConnectEvent(myMSAAEventSource, > "OnObjectFocus", "OnObjectFocus") > > Else > > If TypeName(windowObj.Parent) <> "Empty" Then > > Dim winParent : Set winParent = windowObj.Parent > > If Not winParent Is Nothing Then > > If winParent.Name = "OverlayControl" Or > windowObj.Name = > "DesignerFrame" Then > > ' The form design window > > Speak myStrings("DESIGN_WINDOW") > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > > > ' The form designer has a lot of event > information that we > want to handle ourselves, so we'll block all the relevant events from > Window-Eyes > > ' then hook them with our own event handler. > > Set blockLocationChangeEvent = > MSAAEventSource.BlockEvent(event_OBJECT_LOCATIONCHANGE, > ClientInformation.ApplicationProcess) > > Set blockValueChangeEvent = > MSAAEventSource.BlockEvent(event_OBJECT_VALUECHANGE, > ClientInformation.ApplicationProcess) > > Set blockNameChangeEvent = > MSAAEventSource.BlockEvent(event_OBJECT_NAMECHANGE, > ClientInformation.ApplicationProcess) > > Set blockSelectionEvent = > MSAAEventSource.BlockEvent(event_OBJECT_SELECTION, > ClientInformation.ApplicationProcess) > > Set blockFocusEvent = > MSAAEventSource.BlockEvent(event_OBJECT_FOCUS, > ClientInformation.ApplicationProcess) > > Set blockShowEvent = > MSAAEventSource.BlockEvent(event_OBJECT_SHOW, > ClientInformation.ApplicationProcess) > > > > msaaEventObjectLocationChange = > ConnectEvent(myMSAAEventSource, "OnObjectLocationChange", > "OnObjectLocationChange") > > msaaEventObjectValueChange = > ConnectEvent(myMSAAEventSource, "OnObjectValueChange", > "OnObjectValueChange") > > msaaEventObjectNameChange = > ConnectEvent(myMSAAEventSource, "OnObjectNameChange", > "OnObjectNameChange") > > msaaEventObjectSelection = > ConnectEvent(myMSAAEventSource, "OnObjectSelection", > "OnObjectSelection") > > msaaEventObjectFocus = > ConnectEvent(myMSAAEventSource, "OnObjectFocus", "OnObjectFocus") > > msaaEventObjectShow = > ConnectEvent(myMSAAEventSource, "OnObjectShow", "OnObjectShow") > > End If > > End If > > End If > > End If > > ElseIf windowObj.ModuleName = "MSENV" Then > > If windowObj.ClassName = "VsTextEditPane" Then > > ' The code window > > Speak myStrings("CODE_WINDOW") > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > ElseIf windowObj.ClassName = "RTaskList" Then > > ' The Error/Warnings/Output window > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > > > ' Block focus and selection from Window-Eyes, and handle > those > events ourselves. > > Set blockFocusEvent = > MSAAEventSource.BlockEvent(event_OBJECT_FOCUS, > ClientInformation.ApplicationProcess) > > Set blockSelectionEvent = > MSAAEventSource.BlockEvent(event_OBJECT_SELECTION, > ClientInformation.ApplicationProcess) > > > > msaaEventObjectFocus = ConnectEvent(myMSAAEventSource, > "OnObjectFocus", "OnObjectFocus") > > msaaEventObjectSelection = ConnectEvent(MSAAEventSource, > "OnObjectSelection", "OnObjectSelection") > > ElseIf windowObj.ClassName = "ToolWindowSelect" Then > > ' The Control-Tab window > > Speak myStrings("TOOL_WINDOW") > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > > > ' Block focus and selection from Window-Eyes, and handle > those > events ourselves. > > Set blockFocusEvent = > MSAAEventSource.BlockEvent(event_OBJECT_FOCUS, > ClientInformation.ApplicationProcess) > > Set blockSelectionEvent = > MSAAEventSource.BlockEvent(event_OBJECT_SELECTION, > ClientInformation.ApplicationProcess) > > > > msaaEventObjectFocus = ConnectEvent(myMSAAEventSource, > "OnObjectFocus", "OnObjectFocus") > > msaaEventObjectSelection = ConnectEvent(MSAAEventSource, > "OnObjectSelection", "OnObjectSelection") > > ElseIf windowObj.ClassName = "TBToolboxPane" Then > > ' The toolbox pane (Control-Alt-X) > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > > > ' Block focus from Window-Eyes, and handle those events > ourselves. > > Set blockFocusEvent = > MSAAEventSource.BlockEvent(event_OBJECT_FOCUS, > ClientInformation.ApplicationProcess) > > msaaEventObjectFocus = ConnectEvent(myMSAAEventSource, > "OnObjectFocus", "OnObjectFocus") > > Else > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > End If > > Else > > ' Ensure all previous hooking is disabled. > > UnHookEverything > > End If > > End If > > End If > > End Sub > > > > I dont want to start a heavy analysis of the problem but if you see anything > that jumps out at you or you have something I can check out to determine > why it is not working let me know. > > Rick USA > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: <http://lists.window-eyes.com/private.cgi/scripting-window- > eyes.com/attachments/20150319/8aba175d/attachment.htm> > _______________________________________________ > Any views or opinions presented in this email are solely those of the author > and do not necessarily represent those of Ai Squared. > > For membership options, visit http://lists.window- > eyes.com/options.cgi/scripting-window- > eyes.com/asmith%40aisquared.com. > For subscription options, visit http://lists.window- > eyes.com/listinfo.cgi/scripting-window-eyes.com > List archives can be found at http://lists.window- > eyes.com/private.cgi/scripting-window-eyes.com _______________________________________________ Any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Ai Squared. For membership options, visit http://lists.window-eyes.com/options.cgi/scripting-window-eyes.com/archive%40mail-archive.com. For subscription options, visit http://lists.window-eyes.com/listinfo.cgi/scripting-window-eyes.com List archives can be found at http://lists.window-eyes.com/private.cgi/scripting-window-eyes.com
