Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / UIAutomation / 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 : preid 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. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track context menus appearing // // History: // 3/23/2004 : preid 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
- FrameworkContentElement.cs
- ipaddressinformationcollection.cs
- ZoneMembershipCondition.cs
- ScriptHandlerFactory.cs
- ReferenceList.cs
- TextElementAutomationPeer.cs
- XmlAnyElementAttributes.cs
- MergePropertyDescriptor.cs
- ClientUIRequest.cs
- StateItem.cs
- HostedHttpContext.cs
- UIElementAutomationPeer.cs
- TimeSpanStorage.cs
- Funcletizer.cs
- GroupItem.cs
- HttpInputStream.cs
- TableParagraph.cs
- RectAnimation.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- DriveNotFoundException.cs
- HttpListenerTimeoutManager.cs
- SupportingTokenSecurityTokenResolver.cs
- SqlRetyper.cs
- EdmSchemaError.cs
- SplitterPanelDesigner.cs
- PackWebRequestFactory.cs
- UnsafeNativeMethods.cs
- ProfileSettings.cs
- NetworkStream.cs
- SqlLiftWhereClauses.cs
- BaseParagraph.cs
- Oci.cs
- SchemaInfo.cs
- ThicknessAnimationUsingKeyFrames.cs
- ServiceModelExtensionCollectionElement.cs
- DbInsertCommandTree.cs
- PeerNameRecord.cs
- OracleParameterBinding.cs
- PassportAuthenticationModule.cs
- InputScopeNameConverter.cs
- ScrollableControl.cs
- DomainUpDown.cs
- ExcCanonicalXml.cs
- SecurityResources.cs
- DocumentViewerConstants.cs
- LocatorGroup.cs
- LogSwitch.cs
- WebPartExportVerb.cs
- DataGridToolTip.cs
- HashUtility.cs
- WebPartZoneCollection.cs
- WebPartUserCapability.cs
- MetaChildrenColumn.cs
- Calendar.cs
- ExtendedPropertyDescriptor.cs
- HistoryEventArgs.cs
- ExpressionPrefixAttribute.cs
- DataBindingList.cs
- BindingContext.cs
- AuthorizationRule.cs
- ProxyFragment.cs
- DynamicVirtualDiscoSearcher.cs
- SqlAliasesReferenced.cs
- ApplicationGesture.cs
- InputScopeManager.cs
- LazyTextWriterCreator.cs
- DocumentPageView.cs
- CommentEmitter.cs
- DataSysAttribute.cs
- KeyedCollection.cs
- OptionalColumn.cs
- OdbcError.cs
- CornerRadiusConverter.cs
- RectAnimationClockResource.cs
- _CookieModule.cs
- SharedStatics.cs
- DataRecord.cs
- OdbcErrorCollection.cs
- SettingsAttributeDictionary.cs
- PropertyGridEditorPart.cs
- DesignerDataView.cs
- EntityContainerRelationshipSet.cs
- Constraint.cs
- ComponentTray.cs
- BufferedGraphicsContext.cs
- OLEDB_Util.cs
- EventItfInfo.cs
- MimePart.cs
- _DigestClient.cs
- SrgsItemList.cs
- ClientViaElement.cs
- columnmapkeybuilder.cs
- ResourceSet.cs
- ProofTokenCryptoHandle.cs
- IPAddressCollection.cs
- XsdDataContractImporter.cs
- DataRelationPropertyDescriptor.cs
- XmlBinaryReader.cs
- SqlEnums.cs
- SecurityTokenContainer.cs