Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1 / MenuTracker.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track context menus appearing // // History: // 3/23/2004 : [....] Created // //--------------------------------------------------------------------------- using System; using System.Text; using System.Windows.Automation; using System.Diagnostics; using MS.Win32; namespace MS.Internal.Automation { internal delegate void MenuHandler( AutomationElement rawEl, bool menuHasOpened ); // MenuOpened - Class used to track context menus appearing internal class MenuTracker : WinEventWrap { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal MenuTracker(MenuHandler newHandler) : base(new int[] {NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART, NativeMethods.EVENT_SYSTEM_MENUPOPUPEND}) { AddCallback(newHandler); } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime) { AutomationElement rawEl = null; bool menuHasOpened = eventId == NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART; // Only create a raw element wrapper if the menu has popped up. Send a // null element for menu closed (the element isn't available anymore). // if( menuHasOpened ) { // Ignore if this is a bogus hwnd (shouldn't happen) if( hwnd == IntPtr.Zero ) return; NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast( hwnd ); if( !SafeNativeMethods.IsWindow( nativeHwnd ) ) return; // Filter... send events for visible hwnds only if( !SafeNativeMethods.IsWindowVisible( nativeHwnd ) ) return; rawEl = AutomationElement.FromHandle( hwnd ); } // Do callback. This handler is called due to a WinEvent on the client. The handler // is going to hand off the work of calling out to the client code to another thread // via a queue so it is safe to do this callback w/in the lock. object [] handlers = GetHandlers(); Debug.Assert(handlers.Length <= 1, "handlers.Length"); if( handlers.Length > 0 ) ( ( MenuHandler )handlers[0] )( rawEl, menuHasOpened ); } #endregion Internal Methods } } // 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
- UnaryQueryOperator.cs
- _CommandStream.cs
- StructuredTypeInfo.cs
- CachedRequestParams.cs
- BaseParser.cs
- MenuItemBindingCollection.cs
- KerberosTicketHashIdentifierClause.cs
- Point3DCollection.cs
- CodeNamespaceCollection.cs
- OdbcParameterCollection.cs
- ConfigurationHandlersInstallComponent.cs
- DBParameter.cs
- DataGridViewCellConverter.cs
- Funcletizer.cs
- Menu.cs
- XhtmlBasicListAdapter.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- WebScriptMetadataMessage.cs
- ReversePositionQuery.cs
- WizardPanel.cs
- AsymmetricKeyExchangeDeformatter.cs
- Int32Storage.cs
- GCHandleCookieTable.cs
- RelationshipConverter.cs
- DurableMessageDispatchInspector.cs
- RepeatEnumerable.cs
- ToolStripControlHost.cs
- SwitchAttribute.cs
- PluralizationServiceUtil.cs
- WindowsIPAddress.cs
- WebAdminConfigurationHelper.cs
- XmlSerializableServices.cs
- SourceChangedEventArgs.cs
- DynamicValueConverter.cs
- DigitShape.cs
- Process.cs
- AmbientProperties.cs
- Part.cs
- InternalPermissions.cs
- CryptoApi.cs
- _TLSstream.cs
- SQLRoleProvider.cs
- EncoderParameter.cs
- RequestContext.cs
- CommandHelpers.cs
- SingleTagSectionHandler.cs
- TextAdaptor.cs
- ApplicationFileParser.cs
- DecimalConstantAttribute.cs
- FormViewDeletedEventArgs.cs
- ConfigXmlAttribute.cs
- ModelTreeEnumerator.cs
- HandlerFactoryWrapper.cs
- CompilationLock.cs
- KeyTimeConverter.cs
- PersonalizableTypeEntry.cs
- Pair.cs
- SoapExtensionTypeElementCollection.cs
- TextBoxRenderer.cs
- RepeatButtonAutomationPeer.cs
- SecurityHeaderElementInferenceEngine.cs
- ValidationError.cs
- GiveFeedbackEventArgs.cs
- PropertyMetadata.cs
- EventDescriptorCollection.cs
- XmlSchemaAnnotated.cs
- Matrix.cs
- _DigestClient.cs
- MetadataProperty.cs
- SqlBuffer.cs
- AdapterDictionary.cs
- DbConnectionStringCommon.cs
- DocumentPropertiesDialog.cs
- ListViewUpdateEventArgs.cs
- DbExpressionBuilder.cs
- XmlSchemaObjectCollection.cs
- CannotUnloadAppDomainException.cs
- FrameworkElementFactoryMarkupObject.cs
- SurrogateChar.cs
- OdbcConnectionString.cs
- ScriptingScriptResourceHandlerSection.cs
- OutputCacheProfile.cs
- CircleHotSpot.cs
- PkcsUtils.cs
- TableHeaderCell.cs
- PublishLicense.cs
- CustomAttribute.cs
- ExpressionTextBox.xaml.cs
- TabRenderer.cs
- MouseBinding.cs
- cryptoapiTransform.cs
- XmlHierarchicalDataSourceView.cs
- XmlSchemaInclude.cs
- XPathDocumentIterator.cs
- RubberbandSelector.cs
- DeferredBinaryDeserializerExtension.cs
- TabItem.cs
- StrokeFIndices.cs
- Overlapped.cs
- OptimizerPatterns.cs