Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Automation / Peers / WindowAutomationPeer.cs / 1 / WindowAutomationPeer.cs
using System; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.ComponentModel; using MS.Internal; using MS.Win32; // Used to support the warnings disabled below #pragma warning disable 1634, 1691 namespace System.Windows.Automation.Peers { /// public class WindowAutomationPeer : FrameworkElementAutomationPeer { /// public WindowAutomationPeer(Window owner): base(owner) {} /// override protected string GetClassNameCore() { return "Window"; } /// ////// Critical: As this accesses Handle /// TreatAsSafe: Returning the Window Title is considered safe - discussed on Automation TA review /// [SecurityCritical,SecurityTreatAsSafe] override protected string GetNameCore() { string name = base.GetNameCore(); if(name == string.Empty) { Window window = (Window)Owner; if(!window.IsSourceWindowNull) { StringBuilder sb = new StringBuilder(512); UnsafeNativeMethods.GetWindowText(new HandleRef(null, window.CriticalHandle), sb, sb.Capacity); name = sb.ToString(); if (name == null) name = string.Empty; } } return name; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Window; } /// ////// Critical as this method accesses critical data. /// TreatAsSafe - window bounds by themselves is considered safe. /// [SecurityCritical, SecurityTreatAsSafe ] override protected Rect GetBoundingRectangleCore() { Window window = (Window)Owner; Rect bounds = new Rect(0,0,0,0); if(!window.IsSourceWindowNull) { NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0); IntPtr windowHandle = window.CriticalHandle; if(windowHandle != IntPtr.Zero) //it is Zero on a window that was just closed { try { SafeNativeMethods.GetWindowRect(new HandleRef(null, windowHandle), ref rc); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 } bounds = new Rect(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); } return bounds; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using System.Windows; using System.Windows.Interop; using System.Windows.Media; using System.ComponentModel; using MS.Internal; using MS.Win32; // Used to support the warnings disabled below #pragma warning disable 1634, 1691 namespace System.Windows.Automation.Peers { /// public class WindowAutomationPeer : FrameworkElementAutomationPeer { /// public WindowAutomationPeer(Window owner): base(owner) {} /// override protected string GetClassNameCore() { return "Window"; } /// ////// Critical: As this accesses Handle /// TreatAsSafe: Returning the Window Title is considered safe - discussed on Automation TA review /// [SecurityCritical,SecurityTreatAsSafe] override protected string GetNameCore() { string name = base.GetNameCore(); if(name == string.Empty) { Window window = (Window)Owner; if(!window.IsSourceWindowNull) { StringBuilder sb = new StringBuilder(512); UnsafeNativeMethods.GetWindowText(new HandleRef(null, window.CriticalHandle), sb, sb.Capacity); name = sb.ToString(); if (name == null) name = string.Empty; } } return name; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Window; } /// ////// Critical as this method accesses critical data. /// TreatAsSafe - window bounds by themselves is considered safe. /// [SecurityCritical, SecurityTreatAsSafe ] override protected Rect GetBoundingRectangleCore() { Window window = (Window)Owner; Rect bounds = new Rect(0,0,0,0); if(!window.IsSourceWindowNull) { NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0); IntPtr windowHandle = window.CriticalHandle; if(windowHandle != IntPtr.Zero) //it is Zero on a window that was just closed { try { SafeNativeMethods.GetWindowRect(new HandleRef(null, windowHandle), ref rc); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 } bounds = new Rect(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); } return bounds; } } } // 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
- ManagedFilter.cs
- DataGridTable.cs
- documentsequencetextview.cs
- XmlILModule.cs
- TransformerConfigurationWizardBase.cs
- MobileUserControl.cs
- XPathScanner.cs
- SqlReferenceCollection.cs
- PenLineCapValidation.cs
- ByteAnimation.cs
- UnSafeCharBuffer.cs
- DesignerAttribute.cs
- FirewallWrapper.cs
- MultipartIdentifier.cs
- ThumbAutomationPeer.cs
- EditorZone.cs
- DefaultDiscoveryServiceExtension.cs
- AutomationPatternInfo.cs
- BinHexEncoder.cs
- LinqDataSourceStatusEventArgs.cs
- NavigationWindow.cs
- dataSvcMapFileLoader.cs
- IERequestCache.cs
- ContractTypeNameCollection.cs
- IconHelper.cs
- RegistryPermission.cs
- HttpCachePolicy.cs
- DataGridItemEventArgs.cs
- WorkflowDesignerMessageFilter.cs
- ObjectItemAssemblyLoader.cs
- AutomationPropertyInfo.cs
- FormsAuthenticationEventArgs.cs
- CFStream.cs
- EventLogPermissionAttribute.cs
- GrammarBuilderBase.cs
- DrawingGroup.cs
- ConfigUtil.cs
- MSG.cs
- ElementProxy.cs
- DropTarget.cs
- UICuesEvent.cs
- DragEventArgs.cs
- PropertyIDSet.cs
- _RequestCacheProtocol.cs
- webbrowsersite.cs
- FixedTextBuilder.cs
- XmlMemberMapping.cs
- RadioButtonBaseAdapter.cs
- HtmlAnchor.cs
- WSAddressing10ProblemHeaderQNameFault.cs
- ConfigurationException.cs
- TreeNodeClickEventArgs.cs
- ClosureBinding.cs
- OleDbDataAdapter.cs
- IResourceProvider.cs
- XmlWriterDelegator.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- FormViewPageEventArgs.cs
- DataGridItemCollection.cs
- ObjectItemNoOpAssemblyLoader.cs
- SetStoryboardSpeedRatio.cs
- FileClassifier.cs
- ItemContainerGenerator.cs
- assertwrapper.cs
- PolicyFactory.cs
- InsufficientExecutionStackException.cs
- AmbiguousMatchException.cs
- EdmProviderManifest.cs
- DrawingGroup.cs
- SmiEventSink_DeferedProcessing.cs
- HwndHost.cs
- QilReplaceVisitor.cs
- GetWinFXPath.cs
- TextUtf8RawTextWriter.cs
- MsmqBindingMonitor.cs
- FormsAuthenticationConfiguration.cs
- XmlElementAttribute.cs
- WebSysDefaultValueAttribute.cs
- XD.cs
- WindowsStatusBar.cs
- sqlcontext.cs
- TypographyProperties.cs
- ImageField.cs
- CommonRemoteMemoryBlock.cs
- TreeViewCancelEvent.cs
- SimpleWebHandlerParser.cs
- QilXmlWriter.cs
- EventLogInternal.cs
- UrlAuthFailureHandler.cs
- PersonalizationStateInfoCollection.cs
- VisualTreeUtils.cs
- ClonableStack.cs
- SafeArrayRankMismatchException.cs
- DataGrid.cs
- Pair.cs
- _IPv4Address.cs
- HyperLinkStyle.cs
- HashCryptoHandle.cs
- DbDataSourceEnumerator.cs
- Metafile.cs