Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- Predicate.cs
- SiteIdentityPermission.cs
- XsdDataContractImporter.cs
- ZoneMembershipCondition.cs
- CodeArrayIndexerExpression.cs
- RangeBaseAutomationPeer.cs
- Mapping.cs
- XmlRootAttribute.cs
- SharedPerformanceCounter.cs
- Encoder.cs
- OleDbConnectionInternal.cs
- SizeF.cs
- ImageKeyConverter.cs
- codemethodreferenceexpression.cs
- TypeContext.cs
- HierarchicalDataSourceDesigner.cs
- BindingOperations.cs
- TextFormatterHost.cs
- HtmlEmptyTagControlBuilder.cs
- GreaterThan.cs
- ExcludeFromCodeCoverageAttribute.cs
- SplineKeyFrames.cs
- FieldBuilder.cs
- Codec.cs
- StorageTypeMapping.cs
- TreeNodeSelectionProcessor.cs
- WindowsContainer.cs
- MultilineStringConverter.cs
- ChannelManager.cs
- CultureInfoConverter.cs
- EmbeddedMailObjectsCollection.cs
- Win32MouseDevice.cs
- SecurityDocument.cs
- MultiBinding.cs
- elementinformation.cs
- TracePayload.cs
- CodeTypeReference.cs
- ToolStripSplitButton.cs
- GeneralTransform.cs
- FileLevelControlBuilderAttribute.cs
- WebPartPersonalization.cs
- Point4D.cs
- KeyConverter.cs
- MemoryMappedFile.cs
- GridViewCancelEditEventArgs.cs
- XmlBoundElement.cs
- IdentityValidationException.cs
- CommandSet.cs
- ApplicationActivator.cs
- Variant.cs
- CanonicalFormWriter.cs
- TextTreeObjectNode.cs
- QueryResponse.cs
- Misc.cs
- Int16.cs
- XmlBinaryReaderSession.cs
- CodeDelegateCreateExpression.cs
- RewritingPass.cs
- AppSecurityManager.cs
- EventWaitHandle.cs
- ShaperBuffers.cs
- NameValuePermission.cs
- ArraySortHelper.cs
- DBSqlParserTable.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- ParameterBinding.cs
- TraceUtility.cs
- ManagementObject.cs
- String.cs
- InternalConfigRoot.cs
- HwndProxyElementProvider.cs
- DesignBindingPropertyDescriptor.cs
- ContextStaticAttribute.cs
- SqlLiftWhereClauses.cs
- BookmarkManager.cs
- PeerToPeerException.cs
- ParameterElementCollection.cs
- FastEncoderWindow.cs
- Figure.cs
- GetCertificateRequest.cs
- TdsParserStaticMethods.cs
- HtmlControlDesigner.cs
- IISMapPath.cs
- COAUTHINFO.cs
- HandlerElement.cs
- SapiRecognizer.cs
- AppearanceEditorPart.cs
- DelegateOutArgument.cs
- MessageDecoder.cs
- ModelVisual3D.cs
- COM2ExtendedBrowsingHandler.cs
- MarkupExtensionReturnTypeAttribute.cs
- PackageDigitalSignatureManager.cs
- _TransmitFileOverlappedAsyncResult.cs
- PrintEvent.cs
- SqlDataSourceQueryConverter.cs
- MetafileHeader.cs
- MulticastDelegate.cs
- SourceLineInfo.cs
- SelectionHighlightInfo.cs