Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- LineGeometry.cs
- ProjectionPath.cs
- FontFamily.cs
- DataGridViewBand.cs
- SystemResources.cs
- CodeArrayCreateExpression.cs
- PseudoWebRequest.cs
- OdbcConnectionOpen.cs
- DataGridViewBand.cs
- PageThemeParser.cs
- Vector3DConverter.cs
- ProfileGroupSettingsCollection.cs
- CacheAxisQuery.cs
- ObjectHelper.cs
- TextDecorationCollection.cs
- WebBrowserProgressChangedEventHandler.cs
- DataMemberAttribute.cs
- URI.cs
- MruCache.cs
- BehaviorEditorPart.cs
- XmlText.cs
- ConnectionInterfaceCollection.cs
- RequestSecurityTokenResponse.cs
- UnmanagedMarshal.cs
- PeerCollaboration.cs
- NamespaceList.cs
- DataGridViewRowHeaderCell.cs
- NegationPusher.cs
- DesignerForm.cs
- UiaCoreProviderApi.cs
- DataFormats.cs
- HtmlShimManager.cs
- EndpointAddressProcessor.cs
- SessionParameter.cs
- BlurBitmapEffect.cs
- GeneralTransformGroup.cs
- ISCIIEncoding.cs
- IIS7UserPrincipal.cs
- DefinitionBase.cs
- StringSource.cs
- BaseParagraph.cs
- bidPrivateBase.cs
- TextElementCollection.cs
- ICspAsymmetricAlgorithm.cs
- RecognitionResult.cs
- RuleSetCollection.cs
- HwndStylusInputProvider.cs
- TypeInformation.cs
- RadioButtonList.cs
- Renderer.cs
- DateTime.cs
- SHA384.cs
- LookupNode.cs
- ComplusEndpointConfigContainer.cs
- HttpCookieCollection.cs
- XmlILOptimizerVisitor.cs
- EditorBrowsableAttribute.cs
- SoapTypeAttribute.cs
- ArgumentDirectionHelper.cs
- TypeUnloadedException.cs
- StrokeNodeOperations2.cs
- MatrixTransform.cs
- ThreadStaticAttribute.cs
- HiddenField.cs
- DataControlLinkButton.cs
- RepeatBehaviorConverter.cs
- _ContextAwareResult.cs
- Stylesheet.cs
- WinFormsSpinner.cs
- AppDomainUnloadedException.cs
- HttpCookie.cs
- UseLicense.cs
- X509Certificate.cs
- XmlNodeChangedEventArgs.cs
- BuiltInExpr.cs
- DataViewSettingCollection.cs
- BStrWrapper.cs
- PathStreamGeometryContext.cs
- ObsoleteAttribute.cs
- FontWeightConverter.cs
- XPathDocumentNavigator.cs
- XamlStyleSerializer.cs
- Substitution.cs
- EntityClassGenerator.cs
- WebPartDisplayModeCancelEventArgs.cs
- BindValidationContext.cs
- BamlTreeNode.cs
- dtdvalidator.cs
- SystemIPGlobalStatistics.cs
- InstanceHandle.cs
- CodeTypeMember.cs
- TreeNodeCollection.cs
- DataGridViewHitTestInfo.cs
- RoutedEventHandlerInfo.cs
- WebRequestModuleElementCollection.cs
- TypeDescriptionProviderAttribute.cs
- TreeViewItem.cs
- SqlDataSourceSelectingEventArgs.cs
- ServiceBehaviorAttribute.cs
- KeyManager.cs