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
- HyperlinkAutomationPeer.cs
- ProfileSettingsCollection.cs
- Rect3DValueSerializer.cs
- StateWorkerRequest.cs
- ObjectListSelectEventArgs.cs
- RegionData.cs
- CheckBoxStandardAdapter.cs
- PnrpPermission.cs
- GridViewRowEventArgs.cs
- RegistrySecurity.cs
- BuildProviderUtils.cs
- TransformCryptoHandle.cs
- AbstractSvcMapFileLoader.cs
- ResXResourceSet.cs
- ReadWriteObjectLock.cs
- _ConnectOverlappedAsyncResult.cs
- HTTPNotFoundHandler.cs
- figurelengthconverter.cs
- PropertyMetadata.cs
- CmsUtils.cs
- FixUpCollection.cs
- CheckBox.cs
- _SpnDictionary.cs
- securitymgrsite.cs
- AppearanceEditorPart.cs
- SqlDataSourceDesigner.cs
- CodeRegionDirective.cs
- ImageList.cs
- ReaderWriterLock.cs
- MultiView.cs
- DataGridViewSortCompareEventArgs.cs
- CustomPopupPlacement.cs
- DataServiceHost.cs
- MenuCommand.cs
- PreviewKeyDownEventArgs.cs
- ToolZoneDesigner.cs
- EntityObject.cs
- AudioLevelUpdatedEventArgs.cs
- LeaseManager.cs
- TextEffect.cs
- RegexRunnerFactory.cs
- XsltFunctions.cs
- BitmapFrame.cs
- FamilyMap.cs
- WinEventWrap.cs
- JsonUriDataContract.cs
- RangeBase.cs
- EditorPartCollection.cs
- AssertHelper.cs
- RadioButton.cs
- NetworkAddressChange.cs
- Int16Converter.cs
- UserNameSecurityToken.cs
- SourceElementsCollection.cs
- Propagator.cs
- Focus.cs
- InkCanvasSelectionAdorner.cs
- PrincipalPermission.cs
- PagerStyle.cs
- DoubleLinkList.cs
- WebPartAuthorizationEventArgs.cs
- CredentialManagerDialog.cs
- IRCollection.cs
- TriggerBase.cs
- Missing.cs
- FilteredDataSetHelper.cs
- CheckoutException.cs
- AtomServiceDocumentSerializer.cs
- LineServices.cs
- ResolveDuplexAsyncResult.cs
- Point4D.cs
- ExpandableObjectConverter.cs
- TreeViewImageIndexConverter.cs
- IndentTextWriter.cs
- DataGridCaption.cs
- MatrixAnimationUsingPath.cs
- ForeignConstraint.cs
- FixedSOMLineRanges.cs
- RequiredFieldValidator.cs
- _UriSyntax.cs
- LayoutTable.cs
- StyleHelper.cs
- SHA256.cs
- WebServiceAttribute.cs
- RtfToken.cs
- CharAnimationBase.cs
- RoleBoolean.cs
- RuntimeResourceSet.cs
- ParentQuery.cs
- DecoratedNameAttribute.cs
- SmtpSection.cs
- AttributeEmitter.cs
- RestHandlerFactory.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- MdiWindowListStrip.cs
- Int32RectValueSerializer.cs
- ByeOperationAsyncResult.cs
- TextRangeBase.cs
- TextParagraphCache.cs
- RsaSecurityTokenAuthenticator.cs