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
- TraceHwndHost.cs
- BitVector32.cs
- SecurityAlgorithmSuiteConverter.cs
- TraceInternal.cs
- ToolStripItemRenderEventArgs.cs
- DoubleAnimationClockResource.cs
- ImpersonationOption.cs
- Rect3DValueSerializer.cs
- OperationFormatUse.cs
- NetworkStream.cs
- PopupRoot.cs
- InstanceDataCollectionCollection.cs
- CallbackValidatorAttribute.cs
- SafeRightsManagementQueryHandle.cs
- PeekCompletedEventArgs.cs
- RuleSettings.cs
- SettingsPropertyValue.cs
- RestHandler.cs
- FileDetails.cs
- RoutedEventArgs.cs
- ParagraphVisual.cs
- SQLInt16.cs
- Variable.cs
- PackagingUtilities.cs
- InputEventArgs.cs
- SuspendDesigner.cs
- DataGridViewButtonColumn.cs
- PolicyDesigner.cs
- DesignerVerbCollection.cs
- ByteAnimationUsingKeyFrames.cs
- ScriptBehaviorDescriptor.cs
- DataGridViewColumnHeaderCell.cs
- ItemsPresenter.cs
- QueryAsyncResult.cs
- Span.cs
- FixedSOMTableCell.cs
- httpserverutility.cs
- CultureMapper.cs
- TraceHandler.cs
- CollectionViewGroup.cs
- CodeSubDirectory.cs
- Geometry3D.cs
- Translator.cs
- QueryOpcode.cs
- OdbcParameter.cs
- ConfigsHelper.cs
- SpecularMaterial.cs
- Ref.cs
- ThemeInfoAttribute.cs
- ReadOnlyTernaryTree.cs
- CompilerHelpers.cs
- XamlRtfConverter.cs
- UnmanagedMemoryStream.cs
- SmtpNetworkElement.cs
- CountdownEvent.cs
- HttpMethodConstraint.cs
- SafeWaitHandle.cs
- XmlSignatureProperties.cs
- Vertex.cs
- CookielessHelper.cs
- ActivityExecutor.cs
- BindingMAnagerBase.cs
- connectionpool.cs
- Popup.cs
- NotifyInputEventArgs.cs
- RunInstallerAttribute.cs
- AddInToken.cs
- HtmlInputButton.cs
- BamlStream.cs
- TableCellCollection.cs
- SimpleWorkerRequest.cs
- TemplateXamlParser.cs
- EventArgs.cs
- DoubleStorage.cs
- ClientBuildManagerCallback.cs
- PositiveTimeSpanValidatorAttribute.cs
- HotCommands.cs
- OdbcStatementHandle.cs
- Helper.cs
- SelectionEditor.cs
- MetaForeignKeyColumn.cs
- HtmlAnchor.cs
- XmlReflectionMember.cs
- ProfessionalColors.cs
- OutputBuffer.cs
- EventHandlerList.cs
- LineBreakRecord.cs
- DataGridViewSelectedCellCollection.cs
- OdbcCommand.cs
- Triplet.cs
- ExceptQueryOperator.cs
- ToolStripRendererSwitcher.cs
- RequiredFieldValidator.cs
- DoubleStorage.cs
- IdentityHolder.cs
- UIPermission.cs
- AsyncPostBackTrigger.cs
- XsdDateTime.cs
- Journal.cs
- Mapping.cs