Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1305600 / 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
- XhtmlTextWriter.cs
- OleDbCommand.cs
- DesignerCategoryAttribute.cs
- SystemIPAddressInformation.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- PartitionResolver.cs
- SecurityDocument.cs
- XmlObjectSerializerWriteContext.cs
- SoapAttributeAttribute.cs
- TreeNodeStyle.cs
- Stack.cs
- AppSettingsReader.cs
- Deflater.cs
- DbConnectionStringCommon.cs
- _NetRes.cs
- DataReceivedEventArgs.cs
- Msec.cs
- BasicCommandTreeVisitor.cs
- TextEditorDragDrop.cs
- FlowLayoutPanel.cs
- Bidi.cs
- StateDesigner.cs
- BigInt.cs
- EventLog.cs
- Matrix3DValueSerializer.cs
- Schema.cs
- Typography.cs
- ResourceAssociationTypeEnd.cs
- HitTestWithGeometryDrawingContextWalker.cs
- PeerTransportSecuritySettings.cs
- PrimitiveRenderer.cs
- Qualifier.cs
- WindowProviderWrapper.cs
- ContractCodeDomInfo.cs
- SendMailErrorEventArgs.cs
- SqlConnectionHelper.cs
- SafeNativeMethods.cs
- CodeVariableDeclarationStatement.cs
- SequenceQuery.cs
- XmlCountingReader.cs
- MouseButton.cs
- SQLInt32.cs
- SchemaElement.cs
- querybuilder.cs
- LinkLabel.cs
- RandomNumberGenerator.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- CompilerCollection.cs
- While.cs
- __ConsoleStream.cs
- PermissionRequestEvidence.cs
- UriSection.cs
- XmlSchemaSet.cs
- TagMapCollection.cs
- Style.cs
- UniqueConstraint.cs
- BinaryNode.cs
- ReaderOutput.cs
- StdValidatorsAndConverters.cs
- UserControl.cs
- ResizeGrip.cs
- CounterSampleCalculator.cs
- ShapingEngine.cs
- PositiveTimeSpanValidator.cs
- SqlDataReader.cs
- PresentationSource.cs
- AppDomainAttributes.cs
- ElementHostAutomationPeer.cs
- ControlBuilder.cs
- MSAANativeProvider.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- IPPacketInformation.cs
- RemoteAsymmetricSignatureFormatter.cs
- CookieParameter.cs
- NodeFunctions.cs
- InvalidFilterCriteriaException.cs
- webbrowsersite.cs
- MissingMethodException.cs
- ContentDisposition.cs
- MimeReflector.cs
- ServiceProviders.cs
- WindowsNonControl.cs
- IList.cs
- SettingsPropertyNotFoundException.cs
- ByteFacetDescriptionElement.cs
- RotateTransform.cs
- XmlUtilWriter.cs
- MenuBindingsEditorForm.cs
- ResourceContainer.cs
- SystemKeyConverter.cs
- BoundField.cs
- SmtpException.cs
- IdnElement.cs
- InheritanceContextHelper.cs
- UserControlAutomationPeer.cs
- rsa.cs
- TrustManager.cs
- localization.cs
- DataObjectEventArgs.cs
- XmlSchemaFacet.cs