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
- NavigationEventArgs.cs
- InertiaTranslationBehavior.cs
- PageParser.cs
- AnnotationAdorner.cs
- ChannelDemuxer.cs
- HtmlShimManager.cs
- DataBoundLiteralControl.cs
- CustomAttributeSerializer.cs
- Aggregates.cs
- WebDescriptionAttribute.cs
- IFlowDocumentViewer.cs
- SynchronizationFilter.cs
- MessageFormatterConverter.cs
- FormsAuthenticationEventArgs.cs
- RowTypeElement.cs
- XmlChildNodes.cs
- unsafeIndexingFilterStream.cs
- Rect.cs
- InvokePatternIdentifiers.cs
- CompilerTypeWithParams.cs
- DiscreteKeyFrames.cs
- XmlSchemaExternal.cs
- UrlEncodedParameterWriter.cs
- FacetEnabledSchemaElement.cs
- CompilerGeneratedAttribute.cs
- WindowsAuthenticationEventArgs.cs
- AsyncResult.cs
- ImageDrawing.cs
- CellRelation.cs
- Hash.cs
- WindowsFormsSectionHandler.cs
- JpegBitmapEncoder.cs
- XsltConvert.cs
- TableColumn.cs
- SystemIPAddressInformation.cs
- PolyLineSegmentFigureLogic.cs
- XmlSchemaValidationException.cs
- InfoCardClaim.cs
- NamespaceExpr.cs
- HwndSourceKeyboardInputSite.cs
- util.cs
- ComPlusSynchronizationContext.cs
- SqlConnectionStringBuilder.cs
- DbSource.cs
- NotifyInputEventArgs.cs
- ConfigurationElement.cs
- QueryStringParameter.cs
- CorrelationValidator.cs
- SqlErrorCollection.cs
- PassportAuthenticationEventArgs.cs
- SmiSettersStream.cs
- ExcludeFromCodeCoverageAttribute.cs
- AttachedAnnotation.cs
- XmlSchemaIdentityConstraint.cs
- OdbcEnvironmentHandle.cs
- XamlBrushSerializer.cs
- ErrorStyle.cs
- DataTableReader.cs
- TypeConstant.cs
- ProfileGroupSettings.cs
- OleDbParameter.cs
- SqlDependencyListener.cs
- TdsParameterSetter.cs
- HttpModulesSection.cs
- ServiceElement.cs
- WebReferencesBuildProvider.cs
- XPathSelfQuery.cs
- Bits.cs
- DisplayNameAttribute.cs
- FloaterBaseParagraph.cs
- SimpleHandlerFactory.cs
- StreamGeometryContext.cs
- NameSpaceExtractor.cs
- ControlsConfig.cs
- UInt32Storage.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- WriteFileContext.cs
- DataPagerField.cs
- FileChangesMonitor.cs
- HttpHandlerAction.cs
- DataListItem.cs
- ItemContainerProviderWrapper.cs
- PTConverter.cs
- StackOverflowException.cs
- OperandQuery.cs
- OAVariantLib.cs
- TopClause.cs
- WebPermission.cs
- ControlSerializer.cs
- DataGridViewElement.cs
- InstanceKeyNotReadyException.cs
- WebServiceHost.cs
- SchemaImporterExtensionsSection.cs
- PeerNameRecordCollection.cs
- HMACSHA512.cs
- DocumentOrderComparer.cs
- EventToken.cs
- SynchronizedPool.cs
- SerializationEventsCache.cs
- RemoteWebConfigurationHost.cs