Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ImageCreator.cs
- TextEditorSelection.cs
- RedistVersionInfo.cs
- ParseChildrenAsPropertiesAttribute.cs
- TextTreeTextBlock.cs
- HyperLinkColumn.cs
- Pair.cs
- HwndSource.cs
- SchemaImporterExtensionElement.cs
- ReadOnlyObservableCollection.cs
- DelimitedListTraceListener.cs
- HtmlInputSubmit.cs
- XPathMultyIterator.cs
- ControlPropertyNameConverter.cs
- EntityWithChangeTrackerStrategy.cs
- MatrixAnimationUsingPath.cs
- SplineQuaternionKeyFrame.cs
- RadioButtonFlatAdapter.cs
- DataExpression.cs
- ValidatorCompatibilityHelper.cs
- HttpWebResponse.cs
- LogStream.cs
- ConnectionsZone.cs
- ComponentChangedEvent.cs
- AuthenticationService.cs
- HttpCachePolicyElement.cs
- PrintDocument.cs
- Mapping.cs
- CdpEqualityComparer.cs
- EndpointIdentityConverter.cs
- GatewayIPAddressInformationCollection.cs
- SecureStringHasher.cs
- EmptyEnumerator.cs
- GregorianCalendar.cs
- DoubleCollectionValueSerializer.cs
- XmlILStorageConverter.cs
- ObjectResult.cs
- DocumentsTrace.cs
- SiteMapNodeCollection.cs
- _OverlappedAsyncResult.cs
- _ProxyChain.cs
- XPathNodeInfoAtom.cs
- storepermission.cs
- CodeArgumentReferenceExpression.cs
- ConnectivityStatus.cs
- ServicePoint.cs
- SqlCacheDependencySection.cs
- Size3D.cs
- FontInfo.cs
- UseAttributeSetsAction.cs
- DetailsViewUpdateEventArgs.cs
- CollectionViewGroup.cs
- TransformConverter.cs
- ContextMenu.cs
- EventSourceCreationData.cs
- SecurityTokenParameters.cs
- NullableBoolConverter.cs
- SafeFileMappingHandle.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- TreeViewEvent.cs
- ScriptReferenceBase.cs
- ActivityDesigner.cs
- returneventsaver.cs
- RequestDescription.cs
- Link.cs
- ThemeableAttribute.cs
- NonceCache.cs
- SHA384Managed.cs
- ViewGenResults.cs
- ScrollEventArgs.cs
- TriggerAction.cs
- TreeNodeSelectionProcessor.cs
- UnaryQueryOperator.cs
- ThemeableAttribute.cs
- StackBuilderSink.cs
- Stylesheet.cs
- _DomainName.cs
- StatusBarDrawItemEvent.cs
- InsufficientMemoryException.cs
- KeyConstraint.cs
- XmlDeclaration.cs
- LockCookie.cs
- XmlSigningNodeWriter.cs
- ToolStripMenuItem.cs
- MetadataHelper.cs
- FileLogRecordHeader.cs
- recordstatescratchpad.cs
- BamlBinaryWriter.cs
- SqlDataSourceCustomCommandEditor.cs
- XsdBuildProvider.cs
- BitStream.cs
- ConfigurationSection.cs
- ChameleonKey.cs
- WebHttpBindingCollectionElement.cs
- DesignerVerbCollection.cs
- IFlowDocumentViewer.cs
- XmlDocument.cs
- HttpCacheVaryByContentEncodings.cs
- RadioButton.cs
- MethodBuilder.cs