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
- ToolStripGripRenderEventArgs.cs
- AbstractSvcMapFileLoader.cs
- QilStrConcat.cs
- VisualStyleInformation.cs
- XPathChildIterator.cs
- EllipticalNodeOperations.cs
- ExclusiveNamedPipeTransportManager.cs
- ClientSettingsProvider.cs
- WeakEventTable.cs
- DataGridViewLinkCell.cs
- ListView.cs
- ConnectionInterfaceCollection.cs
- X509ClientCertificateAuthentication.cs
- ColumnHeaderConverter.cs
- VisualSerializer.cs
- FrameworkEventSource.cs
- CanonicalFormWriter.cs
- StrokeSerializer.cs
- RuleAction.cs
- SpecialFolderEnumConverter.cs
- ConnectionInterfaceCollection.cs
- List.cs
- ViewStateException.cs
- PropertyCondition.cs
- StrokeNodeOperations2.cs
- Span.cs
- WebPartConnectionCollection.cs
- SharedUtils.cs
- WebDisplayNameAttribute.cs
- NonSerializedAttribute.cs
- TraceContextRecord.cs
- PackageDigitalSignature.cs
- ObjectListFieldsPage.cs
- XmlSchemaAll.cs
- StorageConditionPropertyMapping.cs
- ModelItemCollection.cs
- CommandValueSerializer.cs
- RectAnimation.cs
- COM2EnumConverter.cs
- DataSourceDesigner.cs
- SuppressMessageAttribute.cs
- UnsignedPublishLicense.cs
- TriggerActionCollection.cs
- MutexSecurity.cs
- FastEncoder.cs
- PrePostDescendentsWalker.cs
- CubicEase.cs
- ImplicitInputBrush.cs
- XmlNode.cs
- DocumentGridContextMenu.cs
- RegexCapture.cs
- BinaryMethodMessage.cs
- DataGridViewColumnCollection.cs
- ImageFormatConverter.cs
- WebPartDisplayMode.cs
- TypeSemantics.cs
- BulletChrome.cs
- AssociationSetEnd.cs
- TableSectionStyle.cs
- SizeAnimationUsingKeyFrames.cs
- RoamingStoreFile.cs
- DispatcherExceptionFilterEventArgs.cs
- StorageMappingItemLoader.cs
- XslTransform.cs
- XmlNotation.cs
- EncodingDataItem.cs
- CustomAttributeSerializer.cs
- CompilerHelpers.cs
- BlockUIContainer.cs
- DataServiceKeyAttribute.cs
- Input.cs
- DateTimeConverter2.cs
- TextClipboardData.cs
- FacetValueContainer.cs
- GeometryCombineModeValidation.cs
- HandleExceptionArgs.cs
- SerializationAttributes.cs
- CacheOutputQuery.cs
- XD.cs
- ReadingWritingEntityEventArgs.cs
- XamlReader.cs
- CodeDOMProvider.cs
- ToolTip.cs
- ListViewUpdateEventArgs.cs
- FixedSOMGroup.cs
- Persist.cs
- RtfFormatStack.cs
- MatrixTransform.cs
- InputBinder.cs
- backend.cs
- GuidelineSet.cs
- safelink.cs
- SingletonConnectionReader.cs
- DataSysAttribute.cs
- DataViewSettingCollection.cs
- WebPartConnectionsEventArgs.cs
- ReliableOutputConnection.cs
- AsyncDataRequest.cs
- PerspectiveCamera.cs
- SelectorItemAutomationPeer.cs