Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- SafeNativeMethodsCLR.cs
- ServiceProviders.cs
- GuidelineSet.cs
- ClientEventManager.cs
- SecurityUtils.cs
- NestedContainer.cs
- Propagator.Evaluator.cs
- ConfigXmlWhitespace.cs
- XmlSchemaDocumentation.cs
- CapabilitiesSection.cs
- FileSecurity.cs
- DataGridViewComboBoxEditingControl.cs
- AuthenticationServiceManager.cs
- RootAction.cs
- IndicCharClassifier.cs
- AliasExpr.cs
- Grammar.cs
- WebAdminConfigurationHelper.cs
- BounceEase.cs
- CurrentChangedEventManager.cs
- OleDbCommandBuilder.cs
- MethodImplAttribute.cs
- Polygon.cs
- printdlgexmarshaler.cs
- CollectionViewSource.cs
- FormsAuthenticationTicket.cs
- RegexNode.cs
- ScrollPattern.cs
- SettingsPropertyWrongTypeException.cs
- ConfigXmlWhitespace.cs
- StringCollection.cs
- DesignerView.xaml.cs
- Color.cs
- QuaternionAnimation.cs
- ToolCreatedEventArgs.cs
- ISSmlParser.cs
- UrlAuthorizationModule.cs
- FrameAutomationPeer.cs
- GPPOINT.cs
- TableLayout.cs
- RecognizedWordUnit.cs
- WindowsStartMenu.cs
- OptimizedTemplateContent.cs
- ProfileGroupSettingsCollection.cs
- XamlClipboardData.cs
- Span.cs
- GraphicsPathIterator.cs
- ProfileGroupSettingsCollection.cs
- StopRoutingHandler.cs
- PreservationFileReader.cs
- DocumentApplication.cs
- DataBoundControlDesigner.cs
- WebPartChrome.cs
- SmiContextFactory.cs
- Effect.cs
- Assembly.cs
- FreeFormPanel.cs
- GroupQuery.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- UInt16Storage.cs
- SiteOfOriginPart.cs
- StringCollection.cs
- TextCompositionEventArgs.cs
- PolicyException.cs
- WebPartDeleteVerb.cs
- FunctionUpdateCommand.cs
- Contracts.cs
- TcpPortSharing.cs
- CodeAttributeArgument.cs
- NetPeerTcpBinding.cs
- HandlerWithFactory.cs
- ListViewSortEventArgs.cs
- InstanceStore.cs
- ProfileInfo.cs
- SQLConvert.cs
- ClonableStack.cs
- NavigatingCancelEventArgs.cs
- TemplateBuilder.cs
- KeyInfo.cs
- PatternMatchRules.cs
- CommandBinding.cs
- FormCollection.cs
- ProgressBar.cs
- ReferenceAssemblyAttribute.cs
- WebPermission.cs
- ContentTextAutomationPeer.cs
- CqlWriter.cs
- COSERVERINFO.cs
- SharedPersonalizationStateInfo.cs
- ColumnHeaderConverter.cs
- Attributes.cs
- ProcessMonitor.cs
- XmlSerializationGeneratedCode.cs
- sqlstateclientmanager.cs
- TemplateGroupCollection.cs
- Point4DValueSerializer.cs
- HeaderPanel.cs
- XmlText.cs
- InputLanguageProfileNotifySink.cs
- DesignerAttributeInfo.cs