Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- EdmRelationshipRoleAttribute.cs
- SecurityCriticalDataForSet.cs
- DetailsViewDeleteEventArgs.cs
- Confirm.cs
- TemplateNameScope.cs
- SmtpSection.cs
- SHA256CryptoServiceProvider.cs
- FlowDocumentReader.cs
- GlyphCache.cs
- Point3D.cs
- IOException.cs
- ArrangedElementCollection.cs
- CroppedBitmap.cs
- RayMeshGeometry3DHitTestResult.cs
- selecteditemcollection.cs
- XmlSchemaAttributeGroup.cs
- TrustManagerPromptUI.cs
- HttpCookieCollection.cs
- TaskFormBase.cs
- ChannelSinkStacks.cs
- SqlDataSourceWizardForm.cs
- cryptoapiTransform.cs
- NameValueFileSectionHandler.cs
- FullTrustAssembliesSection.cs
- ErrorHandler.cs
- WindowsListViewItem.cs
- RootNamespaceAttribute.cs
- InstanceStoreQueryResult.cs
- WebPartDisplayModeCollection.cs
- PropertyEntry.cs
- DictionarySurrogate.cs
- OledbConnectionStringbuilder.cs
- Utils.cs
- MailMessageEventArgs.cs
- XmlSerializableServices.cs
- DtdParser.cs
- StyleCollectionEditor.cs
- XmlExtensionFunction.cs
- ForwardPositionQuery.cs
- DeploymentSectionCache.cs
- DataFormats.cs
- ListParaClient.cs
- DecoderFallbackWithFailureFlag.cs
- TargetConverter.cs
- TypeContext.cs
- Font.cs
- Attribute.cs
- XmlSchemaRedefine.cs
- FigureParagraph.cs
- HybridObjectCache.cs
- GenericQueueSurrogate.cs
- OleDbWrapper.cs
- XPathItem.cs
- LeftCellWrapper.cs
- PaperSource.cs
- SafeHandle.cs
- mongolianshape.cs
- AccessorTable.cs
- AlternateViewCollection.cs
- HttpInputStream.cs
- PropertyGroupDescription.cs
- ISAPIRuntime.cs
- RadioButton.cs
- CodeTypeParameter.cs
- ToolStripItemTextRenderEventArgs.cs
- EnumerableRowCollection.cs
- TextElementCollection.cs
- ProxyWebPart.cs
- TextComposition.cs
- SafeEventLogReadHandle.cs
- HttpTransportElement.cs
- ProfilePropertySettings.cs
- FlowLayoutPanel.cs
- Rfc2898DeriveBytes.cs
- Size.cs
- BinaryConverter.cs
- PeerSecurityManager.cs
- RequestCachePolicyConverter.cs
- DBSchemaRow.cs
- WebServiceEnumData.cs
- ApplicationInfo.cs
- XmlStreamStore.cs
- XmlWellformedWriter.cs
- RowUpdatedEventArgs.cs
- TaskForm.cs
- _OSSOCK.cs
- HyperLinkColumn.cs
- DeploymentExceptionMapper.cs
- EntityDescriptor.cs
- CodeMemberMethod.cs
- ConfigurationValidatorBase.cs
- AudioLevelUpdatedEventArgs.cs
- TargetInvocationException.cs
- BufferBuilder.cs
- PowerModeChangedEventArgs.cs
- Rect3DConverter.cs
- PointAnimationUsingKeyFrames.cs
- TreeBuilderXamlTranslator.cs
- Emitter.cs
- Panel.cs