Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- DisplayMemberTemplateSelector.cs
- TranslateTransform.cs
- regiisutil.cs
- RuntimeWrappedException.cs
- AttachedAnnotation.cs
- ChildDocumentBlock.cs
- WebSysDescriptionAttribute.cs
- WebPartVerb.cs
- DataError.cs
- ping.cs
- OpenTypeLayout.cs
- CheckBoxList.cs
- OleDbConnection.cs
- HwndSourceParameters.cs
- MatrixValueSerializer.cs
- WebPartUtil.cs
- CompiledXpathExpr.cs
- HGlobalSafeHandle.cs
- SystemResourceKey.cs
- ContentFilePart.cs
- OpenTypeLayoutCache.cs
- Unit.cs
- httpstaticobjectscollection.cs
- RegexCode.cs
- ControlIdConverter.cs
- ServiceNameElement.cs
- UIElementCollection.cs
- XmlParserContext.cs
- BitmapData.cs
- TextMetrics.cs
- DataChangedEventManager.cs
- XmlQueryRuntime.cs
- AccessorTable.cs
- ContractBase.cs
- MediaTimeline.cs
- DoubleAnimationClockResource.cs
- DataTableClearEvent.cs
- MessageLogger.cs
- AutoGeneratedFieldProperties.cs
- ImageAnimator.cs
- StringReader.cs
- XmlSortKeyAccumulator.cs
- MarshalDirectiveException.cs
- ElementUtil.cs
- ConfigurationStrings.cs
- DefaultAsyncDataDispatcher.cs
- messageonlyhwndwrapper.cs
- HandlerFactoryWrapper.cs
- CheckBoxRenderer.cs
- Color.cs
- XmlSchemaSimpleContentRestriction.cs
- SoapBinding.cs
- SqlSupersetValidator.cs
- SeparatorAutomationPeer.cs
- COAUTHINFO.cs
- ConvertersCollection.cs
- DomNameTable.cs
- SmiContextFactory.cs
- CodeGenerator.cs
- UseLicense.cs
- DetailsViewModeEventArgs.cs
- XmlEncApr2001.cs
- UidManager.cs
- AppSecurityManager.cs
- FamilyCollection.cs
- MSG.cs
- TransformerConfigurationWizardBase.cs
- HierarchicalDataBoundControlAdapter.cs
- ObfuscationAttribute.cs
- DetailsViewUpdatedEventArgs.cs
- ContractNamespaceAttribute.cs
- OleDbStruct.cs
- LineMetrics.cs
- Base64Encoder.cs
- validationstate.cs
- XmlRootAttribute.cs
- UTF32Encoding.cs
- ReferencedType.cs
- DetailsViewAutoFormat.cs
- XmlCharType.cs
- ClientSession.cs
- ActiveXSite.cs
- _NetworkingPerfCounters.cs
- Monitor.cs
- Privilege.cs
- AssemblyUtil.cs
- ControlIdConverter.cs
- ObjectStateFormatter.cs
- EntityDataSourceStatementEditor.cs
- EntityWrapper.cs
- _BaseOverlappedAsyncResult.cs
- COM2TypeInfoProcessor.cs
- ReferenceConverter.cs
- CatalogZoneBase.cs
- XmlAnyAttributeAttribute.cs
- BitmapEffectGeneralTransform.cs
- TreeNodeBindingCollection.cs
- LoadRetryConstantStrategy.cs
- ImageButton.cs
- __Filters.cs