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
- SiteMapHierarchicalDataSourceView.cs
- SqlDataSourceStatusEventArgs.cs
- SystemGatewayIPAddressInformation.cs
- FlowPosition.cs
- HighlightVisual.cs
- PlacementWorkspace.cs
- ECDsa.cs
- ToolStripItemRenderEventArgs.cs
- SqlInternalConnectionTds.cs
- ReadWriteControlDesigner.cs
- XmlDocumentType.cs
- OutputCacheProfile.cs
- __ComObject.cs
- Brush.cs
- DefaultShape.cs
- GlyphTypeface.cs
- TaiwanCalendar.cs
- COM2PropertyBuilderUITypeEditor.cs
- PersonalizationProvider.cs
- HeaderedItemsControl.cs
- DocumentPropertiesDialog.cs
- TabControlDesigner.cs
- SlipBehavior.cs
- ParentUndoUnit.cs
- WindowsListBox.cs
- CompoundFileReference.cs
- TraceUtils.cs
- CacheRequest.cs
- AnonymousIdentificationSection.cs
- ScrollBar.cs
- TabItemAutomationPeer.cs
- MsmqDecodeHelper.cs
- ProfileBuildProvider.cs
- RichTextBoxContextMenu.cs
- SplitterPanel.cs
- OdbcPermission.cs
- TypeToken.cs
- Int64Converter.cs
- SystemGatewayIPAddressInformation.cs
- FixedSOMGroup.cs
- CapiSafeHandles.cs
- RtfToXamlReader.cs
- DbConvert.cs
- AVElementHelper.cs
- InputReportEventArgs.cs
- documentsequencetextcontainer.cs
- ComponentChangedEvent.cs
- FamilyMap.cs
- DataTableCollection.cs
- Util.cs
- EventLogInternal.cs
- PrintController.cs
- FullTextLine.cs
- ExpressionBuilderCollection.cs
- SpecularMaterial.cs
- ValidationVisibilityAttribute.cs
- _SafeNetHandles.cs
- ToolStripDesigner.cs
- EntityContainer.cs
- GroupItem.cs
- CodeGenerator.cs
- WebPart.cs
- PackageFilter.cs
- Cursor.cs
- ErrorTableItemStyle.cs
- SmtpClient.cs
- SoapServerProtocol.cs
- ControlPersister.cs
- ExpandSegment.cs
- ButtonChrome.cs
- MediaContextNotificationWindow.cs
- EntityDataSourceContextDisposingEventArgs.cs
- AnnotationResource.cs
- Matrix3D.cs
- SqlReorderer.cs
- ConfigurationLockCollection.cs
- StylusButton.cs
- CompilationSection.cs
- BlockUIContainer.cs
- DynamicResourceExtension.cs
- Wizard.cs
- AttributedMetaModel.cs
- FixedSOMPageElement.cs
- NavigationProgressEventArgs.cs
- AddressingVersion.cs
- SatelliteContractVersionAttribute.cs
- Condition.cs
- WebPartAddingEventArgs.cs
- EntityContainer.cs
- DelegateHelpers.cs
- TransactionInformation.cs
- MappingModelBuildProvider.cs
- DateTimeValueSerializerContext.cs
- ExceptionUtil.cs
- ToolStripProgressBar.cs
- ProjectionPruner.cs
- TokenCreationParameter.cs
- AutoSizeToolBoxItem.cs
- SelectedGridItemChangedEvent.cs
- InternalConfigRoot.cs