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
- ProjectionNode.cs
- SessionStateSection.cs
- XPathParser.cs
- FormViewInsertEventArgs.cs
- TimeEnumHelper.cs
- ThemeableAttribute.cs
- RectConverter.cs
- ObjectHandle.cs
- METAHEADER.cs
- SchemaCollectionPreprocessor.cs
- _FtpDataStream.cs
- SqlBulkCopyColumnMapping.cs
- DataRowCollection.cs
- NamedPermissionSet.cs
- MasterPageCodeDomTreeGenerator.cs
- RayHitTestParameters.cs
- URL.cs
- ConfigurationPropertyAttribute.cs
- MappingItemCollection.cs
- DataColumn.cs
- GridViewSelectEventArgs.cs
- PenLineJoinValidation.cs
- Int32AnimationUsingKeyFrames.cs
- IndicFontClient.cs
- Binding.cs
- WmlLiteralTextAdapter.cs
- MouseButtonEventArgs.cs
- XmlSchemaSimpleContentExtension.cs
- TimerElapsedEvenArgs.cs
- StylusPointPropertyInfo.cs
- BinHexDecoder.cs
- Identifier.cs
- MemberHolder.cs
- Point3D.cs
- SafeNativeMethods.cs
- PointLightBase.cs
- BamlBinaryWriter.cs
- CacheModeValueSerializer.cs
- TextReader.cs
- ReliableSessionBindingElement.cs
- RowToParametersTransformer.cs
- DebugHandleTracker.cs
- SignatureDescription.cs
- WebServiceMethodData.cs
- OleDbConnectionInternal.cs
- XmlUtil.cs
- DateTimeEditor.cs
- XPathBuilder.cs
- ServiceContractListItemList.cs
- TransactionChannel.cs
- EventProviderWriter.cs
- CollectionViewGroup.cs
- CompositeFontParser.cs
- RepeatBehaviorConverter.cs
- WebSysDefaultValueAttribute.cs
- QuaternionAnimation.cs
- UICuesEvent.cs
- TransactionScope.cs
- DeviceContext2.cs
- EvidenceBase.cs
- DataGridViewTextBoxEditingControl.cs
- TreeViewItem.cs
- Animatable.cs
- DataMember.cs
- EdmProviderManifest.cs
- SettingsAttributeDictionary.cs
- CustomAttributeSerializer.cs
- ComplusTypeValidator.cs
- ResourceCategoryAttribute.cs
- CollectionConverter.cs
- NetworkStream.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ValidatingPropertiesEventArgs.cs
- BCryptSafeHandles.cs
- Internal.cs
- ZoneMembershipCondition.cs
- CodeSubDirectory.cs
- CodeAccessSecurityEngine.cs
- SerializableAttribute.cs
- ISAPIWorkerRequest.cs
- FilteredSchemaElementLookUpTable.cs
- ToolBarPanel.cs
- StrokeRenderer.cs
- StructuralComparisons.cs
- _ContextAwareResult.cs
- XmlComplianceUtil.cs
- XmlSchemaSet.cs
- SecurityUtils.cs
- Misc.cs
- FormatterConverter.cs
- ModuleBuilderData.cs
- HostingPreferredMapPath.cs
- SqlTypesSchemaImporter.cs
- ReliabilityContractAttribute.cs
- ForeignKeyConstraint.cs
- RawAppCommandInputReport.cs
- Stackframe.cs
- ExtendedProperty.cs
- WebControlsSection.cs
- DesignBindingConverter.cs