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
- _BasicClient.cs
- mactripleDES.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- ExpressionNode.cs
- RectKeyFrameCollection.cs
- EdmToObjectNamespaceMap.cs
- SetStoryboardSpeedRatio.cs
- Vector3D.cs
- SaveFileDialog.cs
- CodeCatchClauseCollection.cs
- CommandField.cs
- GPRECTF.cs
- Effect.cs
- brushes.cs
- VisualProxy.cs
- ClientSideQueueItem.cs
- WebServiceClientProxyGenerator.cs
- MarshalDirectiveException.cs
- TdsRecordBufferSetter.cs
- ReflectPropertyDescriptor.cs
- TagElement.cs
- BindingListCollectionView.cs
- FontFamily.cs
- StringUtil.cs
- FactoryGenerator.cs
- BitmapSourceSafeMILHandle.cs
- HashSetDebugView.cs
- XsltFunctions.cs
- AnnotationResourceChangedEventArgs.cs
- webclient.cs
- TemplateLookupAction.cs
- JournalNavigationScope.cs
- DataGridRelationshipRow.cs
- GenericTextProperties.cs
- MSG.cs
- Vector3DCollectionValueSerializer.cs
- ElementUtil.cs
- MsmqAppDomainProtocolHandler.cs
- XmlHierarchyData.cs
- Helpers.cs
- ControlUtil.cs
- GridViewRowPresenter.cs
- ObjectSecurity.cs
- DataGridViewRowPrePaintEventArgs.cs
- Vector.cs
- DesignerForm.cs
- UnsafeNativeMethods.cs
- AssemblyAttributes.cs
- IndicShape.cs
- GridViewEditEventArgs.cs
- BitmapEffectrendercontext.cs
- RbTree.cs
- XmlObjectSerializerWriteContext.cs
- NetworkStream.cs
- SettingsAttributes.cs
- DataGridCommandEventArgs.cs
- NullableBoolConverter.cs
- exports.cs
- MimeXmlReflector.cs
- ObjectDataSourceSelectingEventArgs.cs
- CodePropertyReferenceExpression.cs
- OrderedEnumerableRowCollection.cs
- SerTrace.cs
- DrawListViewSubItemEventArgs.cs
- SoapSchemaMember.cs
- TypedElement.cs
- SelectionRange.cs
- ParagraphVisual.cs
- Binding.cs
- DrawListViewColumnHeaderEventArgs.cs
- SharedPersonalizationStateInfo.cs
- StyleSheet.cs
- MemoryFailPoint.cs
- Pair.cs
- DictionaryBase.cs
- EmptyElement.cs
- XmlQualifiedNameTest.cs
- SettingsBase.cs
- OrderedDictionaryStateHelper.cs
- ProjectedSlot.cs
- XmlArrayItemAttributes.cs
- PagePropertiesChangingEventArgs.cs
- WebPartEditorApplyVerb.cs
- MetaModel.cs
- BinaryObjectInfo.cs
- EmptyEnumerator.cs
- ForEachAction.cs
- ExceptionTranslationTable.cs
- RuleSetBrowserDialog.cs
- WebControlToolBoxItem.cs
- ExitEventArgs.cs
- PreservationFileReader.cs
- AuthenticationModuleElementCollection.cs
- WindowPatternIdentifiers.cs
- XamlStyleSerializer.cs
- WebPartDeleteVerb.cs
- ToolBarButton.cs
- EntitySetBaseCollection.cs
- DataSourceView.cs
- RectangleGeometry.cs