Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / UIAutomationClient / MS / Internal / Automation / WindowVisualStateTracker.cs / 1 / WindowVisualStateTracker.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track the visual appearance of Windows and make sure any events // are propogated to that new UI. // // History: // 01/05/2005 : Miw Created // //--------------------------------------------------------------------------- using System; using System.Windows.Automation; using MS.Win32; namespace MS.Internal.Automation { // Class used to track new UI appearing and make sure any events // are propogated to that new UI. internal class WindowVisualStateTracker : WinEventWrap { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal WindowVisualStateTracker() : base(new int[] { NativeMethods.EVENT_OBJECT_LOCATIONCHANGE }) { // Intentionally not setting the callback for the base WinEventWrap since the WinEventProc override // in this class calls RaiseEventInThisClientOnly to actually raise the event to the client. } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime) { // ignore any event not pertaining directly to the window if (idObject != UnsafeNativeMethods.OBJID_WINDOW) { return; } // Ignore if this is a bogus hwnd (shouldn't happen) if (hwnd == IntPtr.Zero) { return; } OnStateChange(hwnd, idObject, idChild); } #endregion Internal Methods //------------------------------------------------------ // // Private Methods // //------------------------------------------------------ #region Private Methods private void OnStateChange(IntPtr hwnd, int idObject, int idChild) { NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast(hwnd); // Ignore windows that have been destroyed if (!SafeNativeMethods.IsWindow(nativeHwnd)) { return; } AutomationElement rawEl = AutomationElement.FromHandle(hwnd); // Raise this event only for elements with the WindowPattern. object patternObject; if (!rawEl.TryGetCurrentPattern(WindowPattern.Pattern, out patternObject)) return; Object windowVisualState = rawEl.GetPatternPropertyValue(WindowPattern.WindowVisualStateProperty, false); // if has no state value just return if (!(windowVisualState is WindowVisualState)) { return; } WindowVisualState state = (WindowVisualState)windowVisualState; // Filter... avoid duplicate events if (hwnd == _lastHwnd && state == _lastState) { return; } AutomationPropertyChangedEventArgs e = new AutomationPropertyChangedEventArgs( WindowPattern.WindowVisualStateProperty, null, state); ClientEventManager.RaiseEventInThisClientOnly(AutomationElement.AutomationPropertyChangedEvent, rawEl, e); // save the last hwnd/rect for filtering out duplicates _lastHwnd = hwnd; _lastState = state; } #endregion Private Methods //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields private WindowVisualState _lastState; // keep track of last visual state private IntPtr _lastHwnd; // and hwnd for dup checking #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RuntimeResourceSet.cs
- AtomServiceDocumentSerializer.cs
- FilteredDataSetHelper.cs
- SqlInternalConnectionSmi.cs
- CharacterString.cs
- Quaternion.cs
- ThumbAutomationPeer.cs
- KeyFrames.cs
- MessageContractAttribute.cs
- ResolveDuplexAsyncResult.cs
- FontSourceCollection.cs
- UncommonField.cs
- SHA512Managed.cs
- ControlPaint.cs
- ImageConverter.cs
- DataObjectSettingDataEventArgs.cs
- ExpandSegment.cs
- EntitySetBaseCollection.cs
- Parser.cs
- PropertyInformationCollection.cs
- CellLabel.cs
- UInt64.cs
- TraceFilter.cs
- Transform.cs
- ClockGroup.cs
- FrameDimension.cs
- SpellerHighlightLayer.cs
- HtmlInputImage.cs
- RootBrowserWindowAutomationPeer.cs
- BamlLocalizabilityResolver.cs
- ScriptModule.cs
- base64Transforms.cs
- EventlogProvider.cs
- PasswordRecovery.cs
- ModelTreeEnumerator.cs
- HtmlWindow.cs
- IncomingWebResponseContext.cs
- AbandonedMutexException.cs
- ObjectDataSource.cs
- NamedPipeActivation.cs
- CodeGroup.cs
- MaskDesignerDialog.cs
- ASCIIEncoding.cs
- ConfigurationFileMap.cs
- KeyboardNavigation.cs
- IpcClientManager.cs
- FormsAuthenticationConfiguration.cs
- PrimitiveXmlSerializers.cs
- PenContexts.cs
- StyleBamlTreeBuilder.cs
- DesignTimeType.cs
- DataGridViewTextBoxColumn.cs
- DocumentOrderQuery.cs
- CustomAttributeFormatException.cs
- EntityReference.cs
- XmlIlTypeHelper.cs
- KeyValueInternalCollection.cs
- SettingsSection.cs
- StructuralCache.cs
- HttpWebRequestElement.cs
- ToolStripGrip.cs
- PenLineJoinValidation.cs
- LogExtent.cs
- RemoteWebConfigurationHostStream.cs
- Dynamic.cs
- NullPackagingPolicy.cs
- DataGridViewUtilities.cs
- XsltQilFactory.cs
- PickBranch.cs
- DataListCommandEventArgs.cs
- StrokeNodeOperations2.cs
- OraclePermissionAttribute.cs
- HwndStylusInputProvider.cs
- FilterException.cs
- PageClientProxyGenerator.cs
- SemanticAnalyzer.cs
- PrincipalPermission.cs
- ImageList.cs
- GlobalDataBindingHandler.cs
- TextEditorContextMenu.cs
- DesignerWebPartChrome.cs
- ExecutionEngineException.cs
- SqlCharStream.cs
- AutoGeneratedField.cs
- X509Certificate2.cs
- PrimaryKeyTypeConverter.cs
- BitmapEffect.cs
- Matrix.cs
- PagesSection.cs
- DataGridViewRowHeaderCell.cs
- TextBoxAutomationPeer.cs
- KerberosTicketHashIdentifierClause.cs
- DesignerActionMethodItem.cs
- figurelength.cs
- ConditionalBranch.cs
- CacheOutputQuery.cs
- DesignSurface.cs
- PKCS1MaskGenerationMethod.cs
- LicenseManager.cs
- MenuItemStyle.cs