Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HScrollBar.cs
- LineUtil.cs
- SqlUtil.cs
- ModelFactory.cs
- BamlBinaryReader.cs
- ParenthesizePropertyNameAttribute.cs
- DeadCharTextComposition.cs
- GeometryValueSerializer.cs
- TagNameToTypeMapper.cs
- MergeFailedEvent.cs
- Monitor.cs
- COM2FontConverter.cs
- URI.cs
- OleDbErrorCollection.cs
- OneToOneMappingSerializer.cs
- TextTreeTextElementNode.cs
- ConnectivityStatus.cs
- XhtmlBasicObjectListAdapter.cs
- ApplicationDirectoryMembershipCondition.cs
- OracleCommandSet.cs
- HtmlHistory.cs
- File.cs
- CodeRemoveEventStatement.cs
- Block.cs
- ServiceElement.cs
- ConstraintManager.cs
- HtmlElementCollection.cs
- ProcessManager.cs
- BindingExpression.cs
- SortDescription.cs
- XmlDigitalSignatureProcessor.cs
- CancelRequestedQuery.cs
- StreamWriter.cs
- ViewManager.cs
- HttpCachePolicyElement.cs
- ObjectKeyFrameCollection.cs
- UpnEndpointIdentityExtension.cs
- NullableDecimalMinMaxAggregationOperator.cs
- Pick.cs
- TransformedBitmap.cs
- ContentType.cs
- PropertySourceInfo.cs
- IISUnsafeMethods.cs
- HttpGetClientProtocol.cs
- XmlTypeMapping.cs
- XmlSerializationReader.cs
- ContractMapping.cs
- WindowsToolbar.cs
- HttpWebRequestElement.cs
- PartitionResolver.cs
- SHA512.cs
- DataGridViewCheckBoxColumn.cs
- AccessibleObject.cs
- ComPlusTypeValidator.cs
- SpellerStatusTable.cs
- MonthCalendarDesigner.cs
- RunInstallerAttribute.cs
- PseudoWebRequest.cs
- StreamUpgradeBindingElement.cs
- ElementHostAutomationPeer.cs
- XmlNodeWriter.cs
- CompositeActivityDesigner.cs
- DesignerResources.cs
- Point.cs
- RemotingConfiguration.cs
- Pair.cs
- WebFormsRootDesigner.cs
- JoinCqlBlock.cs
- WmlCalendarAdapter.cs
- AtomicFile.cs
- TableItemProviderWrapper.cs
- AliasedSlot.cs
- safePerfProviderHandle.cs
- DetailsViewModeEventArgs.cs
- OleDragDropHandler.cs
- EnumMember.cs
- DtcInterfaces.cs
- TagMapInfo.cs
- XmlNullResolver.cs
- EmptyTextWriter.cs
- Compilation.cs
- GridItemProviderWrapper.cs
- InvalidStoreProtectionKeyException.cs
- FontCacheUtil.cs
- DynamicMethod.cs
- KeyConverter.cs
- SqlTransaction.cs
- DataTemplateSelector.cs
- ListItemsPage.cs
- FacetDescription.cs
- RSAProtectedConfigurationProvider.cs
- WindowsTokenRoleProvider.cs
- TimeZoneNotFoundException.cs
- ResourcesGenerator.cs
- Schema.cs
- HMACSHA384.cs
- LineGeometry.cs
- SecureUICommand.cs
- RenderData.cs
- EditorPartChrome.cs