Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / 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 : [....] 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
- WorkflowMarkupSerializer.cs
- CaseInsensitiveHashCodeProvider.cs
- FrameworkElementFactory.cs
- SerializeAbsoluteContext.cs
- KeyEventArgs.cs
- PerformanceCounterNameAttribute.cs
- WebPartRestoreVerb.cs
- XhtmlConformanceSection.cs
- XmlSchemaSearchPattern.cs
- ScriptDescriptor.cs
- WeakReferenceList.cs
- AspNetCompatibilityRequirementsAttribute.cs
- ThicknessAnimationBase.cs
- ChildChangedEventArgs.cs
- JsonUriDataContract.cs
- DataGridAddNewRow.cs
- ProxyManager.cs
- StylusOverProperty.cs
- DefaultValueConverter.cs
- FontConverter.cs
- IDataContractSurrogate.cs
- EditCommandColumn.cs
- SqlFunctions.cs
- LinkedDataMemberFieldEditor.cs
- Pair.cs
- FactoryRecord.cs
- arc.cs
- BehaviorEditorPart.cs
- RootBuilder.cs
- IteratorFilter.cs
- StorageEntityContainerMapping.cs
- RawKeyboardInputReport.cs
- VectorAnimationUsingKeyFrames.cs
- StylusDevice.cs
- Popup.cs
- UpnEndpointIdentityExtension.cs
- StringFunctions.cs
- TextElement.cs
- RoutedEventValueSerializer.cs
- Scene3D.cs
- DescendantBaseQuery.cs
- InProcStateClientManager.cs
- LeaseManager.cs
- Size3D.cs
- AuthenticationModulesSection.cs
- SliderAutomationPeer.cs
- securitycriticaldata.cs
- EntityStoreSchemaFilterEntry.cs
- ServiceNotStartedException.cs
- AssemblyAttributesGoHere.cs
- X509SecurityTokenAuthenticator.cs
- DataGridViewCellStyleChangedEventArgs.cs
- StringAnimationUsingKeyFrames.cs
- DataSourceProvider.cs
- SingleStorage.cs
- HandlerFactoryCache.cs
- ApplyTemplatesAction.cs
- SQLSingleStorage.cs
- ClrPerspective.cs
- ScriptServiceAttribute.cs
- GeneralTransform3D.cs
- PreProcessInputEventArgs.cs
- DataGridRowDetailsEventArgs.cs
- FilterQuery.cs
- RIPEMD160Managed.cs
- AutomationPattern.cs
- MenuItemBindingCollection.cs
- Queue.cs
- CollectionChangeEventArgs.cs
- DelegatingStream.cs
- Journaling.cs
- SplashScreen.cs
- PropertyChangingEventArgs.cs
- UInt32.cs
- LifetimeServices.cs
- CheckBox.cs
- SequentialUshortCollection.cs
- StoreContentChangedEventArgs.cs
- BamlVersionHeader.cs
- IisTraceListener.cs
- MultiByteCodec.cs
- ControlValuePropertyAttribute.cs
- ModifyActivitiesPropertyDescriptor.cs
- EmptyReadOnlyDictionaryInternal.cs
- LinkedList.cs
- GifBitmapEncoder.cs
- CounterSample.cs
- XmlObjectSerializerWriteContextComplex.cs
- CodeTypeParameter.cs
- ThaiBuddhistCalendar.cs
- TypeDescriptionProvider.cs
- Typeface.cs
- DataException.cs
- WindowHelperService.cs
- WebHttpBindingCollectionElement.cs
- BufferedStream.cs
- BoundConstants.cs
- LiteralControl.cs
- BamlTreeUpdater.cs
- LZCodec.cs