Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Input / Win32MouseDevice.cs / 1 / Win32MouseDevice.cs
using System.Diagnostics; using System.Collections; using System.Windows; using System.Windows.Media; using System.Windows.Interop; using System.Windows.Threading; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using MS.Win32; // *NativeMethods using System.Runtime.InteropServices; using System; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// The Win32MouseDevice class implements the platform specific /// MouseDevice features for the Win32 platform /// internal sealed class Win32MouseDevice : MouseDevice { ////// /// /// /// ////// Critical - This is code that elevates AND creates the mouse device which /// happens to hold the callback to filter mouse messages /// TreatAsSafe: This constructor handles critical data but does not expose it /// It stores instance but there are demands on the instances. /// [SecurityCritical,SecurityTreatAsSafe] internal Win32MouseDevice(InputManager inputManager) : base(inputManager) { } ////// Gets the current state of the specified button from the device from the underlying system /// /// /// The mouse button to get the state of /// ////// The state of the specified mouse button /// ////// Critical: Makes calls to UnsafeNativeMethods (GetKeyState) /// TreatAsSafe: Only returns the current state of the specified button /// [SecurityCritical,SecurityTreatAsSafe] internal override MouseButtonState GetButtonStateFromSystem(MouseButton mouseButton) { MouseButtonState mouseButtonState = MouseButtonState.Released; // Security Mitigation: do not give out input state if the device is not active. if(IsActive) { int virtualKeyCode = 0; switch( mouseButton ) { case MouseButton.Left: virtualKeyCode = NativeMethods.VK_LBUTTON; break; case MouseButton.Right: virtualKeyCode = NativeMethods.VK_RBUTTON; break; case MouseButton.Middle: virtualKeyCode = NativeMethods.VK_MBUTTON; break; case MouseButton.XButton1: virtualKeyCode = NativeMethods.VK_XBUTTON1; break; case MouseButton.XButton2: virtualKeyCode = NativeMethods.VK_XBUTTON2; break; } mouseButtonState = ( UnsafeNativeMethods.GetKeyState(virtualKeyCode) & 0x8000 ) != 0 ? MouseButtonState.Pressed : MouseButtonState.Released; } return mouseButtonState; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System.Diagnostics; using System.Collections; using System.Windows; using System.Windows.Media; using System.Windows.Interop; using System.Windows.Threading; using System.Security; using System.Security.Permissions; using MS.Internal; using MS.Internal.PresentationCore; // SecurityHelper using MS.Win32; // *NativeMethods using System.Runtime.InteropServices; using System; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { ////// The Win32MouseDevice class implements the platform specific /// MouseDevice features for the Win32 platform /// internal sealed class Win32MouseDevice : MouseDevice { ////// /// /// /// ////// Critical - This is code that elevates AND creates the mouse device which /// happens to hold the callback to filter mouse messages /// TreatAsSafe: This constructor handles critical data but does not expose it /// It stores instance but there are demands on the instances. /// [SecurityCritical,SecurityTreatAsSafe] internal Win32MouseDevice(InputManager inputManager) : base(inputManager) { } ////// Gets the current state of the specified button from the device from the underlying system /// /// /// The mouse button to get the state of /// ////// The state of the specified mouse button /// ////// Critical: Makes calls to UnsafeNativeMethods (GetKeyState) /// TreatAsSafe: Only returns the current state of the specified button /// [SecurityCritical,SecurityTreatAsSafe] internal override MouseButtonState GetButtonStateFromSystem(MouseButton mouseButton) { MouseButtonState mouseButtonState = MouseButtonState.Released; // Security Mitigation: do not give out input state if the device is not active. if(IsActive) { int virtualKeyCode = 0; switch( mouseButton ) { case MouseButton.Left: virtualKeyCode = NativeMethods.VK_LBUTTON; break; case MouseButton.Right: virtualKeyCode = NativeMethods.VK_RBUTTON; break; case MouseButton.Middle: virtualKeyCode = NativeMethods.VK_MBUTTON; break; case MouseButton.XButton1: virtualKeyCode = NativeMethods.VK_XBUTTON1; break; case MouseButton.XButton2: virtualKeyCode = NativeMethods.VK_XBUTTON2; break; } mouseButtonState = ( UnsafeNativeMethods.GetKeyState(virtualKeyCode) & 0x8000 ) != 0 ? MouseButtonState.Pressed : MouseButtonState.Released; } return mouseButtonState; } } } // 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
- LabelAutomationPeer.cs
- CanonicalFontFamilyReference.cs
- TextOnlyOutput.cs
- CodeVariableDeclarationStatement.cs
- ScriptControl.cs
- ListCommandEventArgs.cs
- FreezableCollection.cs
- AutomationTextAttribute.cs
- XmlWriterTraceListener.cs
- CommandHelper.cs
- ContainerActivationHelper.cs
- DES.cs
- HtmlControl.cs
- TextRunCacheImp.cs
- DivideByZeroException.cs
- BaseCodePageEncoding.cs
- RecordConverter.cs
- BindingObserver.cs
- EnterpriseServicesHelper.cs
- TypeValidationEventArgs.cs
- MarkupWriter.cs
- LinkDescriptor.cs
- ZipIOExtraFieldElement.cs
- EntityDataSourceChangedEventArgs.cs
- CorrelationTokenTypeConvertor.cs
- WCFBuildProvider.cs
- HTMLTextWriter.cs
- MimeReflector.cs
- IntermediatePolicyValidator.cs
- AllMembershipCondition.cs
- SqlFactory.cs
- LocatorPartList.cs
- StandardOleMarshalObject.cs
- ListSourceHelper.cs
- CounterSampleCalculator.cs
- NavigationPropertySingletonExpression.cs
- XsdCachingReader.cs
- IDictionary.cs
- ColorBlend.cs
- ConfigurationManagerHelper.cs
- COM2PropertyPageUITypeConverter.cs
- RuntimeArgumentHandle.cs
- URL.cs
- FontDialog.cs
- SoapReflectionImporter.cs
- InheritablePropertyChangeInfo.cs
- COM2ComponentEditor.cs
- EditingCoordinator.cs
- SqlFacetAttribute.cs
- ScriptingSectionGroup.cs
- ComponentConverter.cs
- EffectiveValueEntry.cs
- XmlBufferReader.cs
- SerializableAttribute.cs
- BitmapMetadataEnumerator.cs
- OleDbFactory.cs
- SamlSubjectStatement.cs
- documentation.cs
- CommandDevice.cs
- ViewCellRelation.cs
- Button.cs
- MediaSystem.cs
- GridViewPageEventArgs.cs
- EntityStoreSchemaGenerator.cs
- RestClientProxyHandler.cs
- WebDescriptionAttribute.cs
- XslAstAnalyzer.cs
- BulletChrome.cs
- IProvider.cs
- SQLSingle.cs
- DataGridCaption.cs
- PeerInvitationResponse.cs
- ImageMap.cs
- LabelEditEvent.cs
- Misc.cs
- EmptyQuery.cs
- SimpleTypeResolver.cs
- ListBase.cs
- TaskCanceledException.cs
- PageFunction.cs
- MergeExecutor.cs
- WindowsListViewItemStartMenu.cs
- WebPartManagerInternals.cs
- DesignTimeParseData.cs
- FontInfo.cs
- EditBehavior.cs
- EventNotify.cs
- TextEditorThreadLocalStore.cs
- DBPropSet.cs
- BinaryNode.cs
- StructuralType.cs
- ImmutableAssemblyCacheEntry.cs
- GreenMethods.cs
- XmlWrappingReader.cs
- CombinedGeometry.cs
- MarginsConverter.cs
- ToolStripKeyboardHandlingService.cs
- GridErrorDlg.cs
- BasicBrowserDialog.cs
- XPathMultyIterator.cs