Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MessageQueuePermission.cs
- ReverseComparer.cs
- AsynchronousChannel.cs
- ConsoleKeyInfo.cs
- BindingEntityInfo.cs
- ComponentCollection.cs
- Visitor.cs
- UIElementAutomationPeer.cs
- errorpatternmatcher.cs
- ContextBase.cs
- TimeoutException.cs
- InvariantComparer.cs
- OracleBFile.cs
- HostedTransportConfigurationManager.cs
- MSAAEventDispatcher.cs
- KnownColorTable.cs
- MetadataItem.cs
- PageCanvasSize.cs
- StylusEditingBehavior.cs
- XPathNodeIterator.cs
- updatecommandorderer.cs
- OperatingSystem.cs
- CodeArgumentReferenceExpression.cs
- ExtendedTransformFactory.cs
- RuntimeArgumentHandle.cs
- RowType.cs
- RunClient.cs
- DeviceContext.cs
- ObjectDataSourceMethodEventArgs.cs
- FixedSOMLineCollection.cs
- RoutedEventHandlerInfo.cs
- BitmapDownload.cs
- LOSFormatter.cs
- AuthorizationRule.cs
- ObjRef.cs
- MailDefinition.cs
- TextSelectionHelper.cs
- MatrixCamera.cs
- CollectionViewSource.cs
- CharacterBuffer.cs
- XmlQualifiedName.cs
- BrowserCapabilitiesCodeGenerator.cs
- httpserverutility.cs
- ProjectionPruner.cs
- QueryableDataSource.cs
- DataServiceQuery.cs
- OptimisticConcurrencyException.cs
- ComUdtElementCollection.cs
- ManifestResourceInfo.cs
- BrushConverter.cs
- ConnectionOrientedTransportBindingElement.cs
- SqlConnectionManager.cs
- RegexInterpreter.cs
- Content.cs
- PackagePart.cs
- DataReceivedEventArgs.cs
- NullableBoolConverter.cs
- GetIndexBinder.cs
- Visual3DCollection.cs
- _ShellExpression.cs
- ModelUtilities.cs
- ManagementObject.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- RecordsAffectedEventArgs.cs
- SchemaObjectWriter.cs
- KerberosSecurityTokenAuthenticator.cs
- InvalidComObjectException.cs
- XmlSchemaCollection.cs
- BuildManagerHost.cs
- MissingMethodException.cs
- ExtenderProvidedPropertyAttribute.cs
- AuthorizationRule.cs
- DataObject.cs
- DbProviderManifest.cs
- MaskedTextBox.cs
- BaseHashHelper.cs
- CodeDelegateCreateExpression.cs
- IgnoreSection.cs
- ExpressionBuilderContext.cs
- RegexWriter.cs
- DesignerActionVerbList.cs
- PackWebResponse.cs
- COM2FontConverter.cs
- CurrentChangedEventManager.cs
- TextTrailingCharacterEllipsis.cs
- _NestedSingleAsyncResult.cs
- DbConnectionPool.cs
- WebPartCloseVerb.cs
- DataGridViewRowsRemovedEventArgs.cs
- ProcessProtocolHandler.cs
- AudioBase.cs
- DataViewManager.cs
- HostVisual.cs
- DataSourceSerializationException.cs
- ListViewCancelEventArgs.cs
- WizardStepBase.cs
- Emitter.cs
- AppSettingsReader.cs
- ProvideValueServiceProvider.cs
- FixedNode.cs