Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / Win32MouseDevice.cs / 1305600 / 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
- EditorPartChrome.cs
- MenuScrollingVisibilityConverter.cs
- ADMembershipProvider.cs
- AutomationEvent.cs
- WebResponse.cs
- TreeSet.cs
- PointLightBase.cs
- RunWorkerCompletedEventArgs.cs
- DataGridViewCellConverter.cs
- ProxyHelper.cs
- LinqDataSourceEditData.cs
- RoleServiceManager.cs
- TraceUtility.cs
- DBNull.cs
- WindowsTreeView.cs
- DbParameterHelper.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DateTimeValueSerializerContext.cs
- CategoriesDocumentFormatter.cs
- BitmapEffectGroup.cs
- RsaSecurityToken.cs
- OleAutBinder.cs
- EditingMode.cs
- StateDesignerConnector.cs
- NamespaceListProperty.cs
- OleDbCommandBuilder.cs
- RequestCachePolicy.cs
- FormViewPageEventArgs.cs
- StreamUpgradeBindingElement.cs
- HierarchicalDataSourceControl.cs
- NameValueSectionHandler.cs
- ExplicitDiscriminatorMap.cs
- ObjectItemCollection.cs
- SqlNotificationEventArgs.cs
- EditorPartCollection.cs
- TreeIterators.cs
- TextRangeBase.cs
- ConnectionsZoneDesigner.cs
- PartialArray.cs
- SizeChangedInfo.cs
- CodeAccessPermission.cs
- OleDragDropHandler.cs
- DataGridViewImageColumn.cs
- Facet.cs
- FontConverter.cs
- SafeProcessHandle.cs
- FrameDimension.cs
- MenuEventArgs.cs
- MeasureData.cs
- MemberRelationshipService.cs
- String.cs
- Vector3DAnimation.cs
- TableCellAutomationPeer.cs
- WindowProviderWrapper.cs
- StickyNoteHelper.cs
- OdbcUtils.cs
- BinaryCommonClasses.cs
- WebControlParameterProxy.cs
- HttpWebResponse.cs
- SearchForVirtualItemEventArgs.cs
- Geometry3D.cs
- WindowsUpDown.cs
- DriveNotFoundException.cs
- PassportAuthentication.cs
- PackageRelationshipCollection.cs
- ArrayWithOffset.cs
- EventLogTraceListener.cs
- Int64Storage.cs
- ObjectDisposedException.cs
- VirtualizingPanel.cs
- WorkflowInstanceAbortedRecord.cs
- TimersDescriptionAttribute.cs
- ValidatorCompatibilityHelper.cs
- XmlDigitalSignatureProcessor.cs
- AutomationPropertyInfo.cs
- ListBindingHelper.cs
- WebPartDisplayModeCancelEventArgs.cs
- ContextMenu.cs
- ComplexTypeEmitter.cs
- Vars.cs
- DetailsViewUpdateEventArgs.cs
- Listbox.cs
- RegexGroupCollection.cs
- XmlSchemaCompilationSettings.cs
- XamlDesignerSerializationManager.cs
- EditorPartChrome.cs
- VisualProxy.cs
- FillRuleValidation.cs
- ItemCheckEvent.cs
- SspiWrapper.cs
- Size.cs
- Converter.cs
- AnnotationComponentManager.cs
- TrackingMemoryStreamFactory.cs
- CqlErrorHelper.cs
- UnwrappedTypesXmlSerializerManager.cs
- BitStack.cs
- RequestCachePolicyConverter.cs
- PngBitmapEncoder.cs
- ContextInformation.cs