Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Automation / Peers / GenericRootAutomationPeer.cs / 1 / GenericRootAutomationPeer.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 GenericRootAutomationPeer : UIElementAutomationPeer { /// public GenericRootAutomationPeer(UIElement owner): base(owner) {} /// override protected string GetClassNameCore() { return "Pane"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Pane; } /// ////// 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) { IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { try { StringBuilder sb = new StringBuilder(512); //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError UnsafeNativeMethods.GetWindowText(new HandleRef(null, hwnd), sb, sb.Capacity); name = sb.ToString(); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 if (name == null) name = string.Empty; } } return name; } /// ////// Critical as this method accesses critical data. /// TreatAsSafe - window bounds by themselves is considered safe. /// [SecurityCritical, SecurityTreatAsSafe ] override protected Rect GetBoundingRectangleCore() { Rect bounds = new Rect(0,0,0,0); IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0); try { //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError SafeNativeMethods.GetWindowRect(new HandleRef(null, hwnd), 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 GenericRootAutomationPeer : UIElementAutomationPeer { /// public GenericRootAutomationPeer(UIElement owner): base(owner) {} /// override protected string GetClassNameCore() { return "Pane"; } /// override protected AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.Pane; } /// ////// 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) { IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { try { StringBuilder sb = new StringBuilder(512); //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError UnsafeNativeMethods.GetWindowText(new HandleRef(null, hwnd), sb, sb.Capacity); name = sb.ToString(); } // Allow empty catch statements. #pragma warning disable 56502 catch(Win32Exception) {} // Disallow empty catch statements. #pragma warning restore 56502 if (name == null) name = string.Empty; } } return name; } /// ////// Critical as this method accesses critical data. /// TreatAsSafe - window bounds by themselves is considered safe. /// [SecurityCritical, SecurityTreatAsSafe ] override protected Rect GetBoundingRectangleCore() { Rect bounds = new Rect(0,0,0,0); IntPtr hwnd = this.Hwnd; if(hwnd != IntPtr.Zero) { NativeMethods.RECT rc = new NativeMethods.RECT(0,0,0,0); try { //This method elevates via SuppressUnmanadegCodeSecurity and throws Win32Exception on GetLastError SafeNativeMethods.GetWindowRect(new HandleRef(null, hwnd), 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
- XsltFunctions.cs
- OdbcCommand.cs
- XmlSignificantWhitespace.cs
- ForceCopyBuildProvider.cs
- ObjectItemNoOpAssemblyLoader.cs
- SerializationHelper.cs
- ImageFormat.cs
- XmlWhitespace.cs
- XamlReader.cs
- PixelShader.cs
- ToolStripCollectionEditor.cs
- DateTimeUtil.cs
- PropertyDescriptor.cs
- ImageBrush.cs
- ToolStripItemDataObject.cs
- MessageQueueEnumerator.cs
- TrackingMemoryStream.cs
- KeyedCollection.cs
- WindowsStartMenu.cs
- ToolStripMenuItem.cs
- Classification.cs
- MembershipSection.cs
- ListCommandEventArgs.cs
- MimeParameters.cs
- PointF.cs
- PasswordBoxAutomationPeer.cs
- RuntimeConfig.cs
- SizeConverter.cs
- KeysConverter.cs
- ToolStripDropDownClosingEventArgs.cs
- CookieProtection.cs
- Transactions.cs
- ExtendedPropertiesHandler.cs
- IntSecurity.cs
- DependencyObjectPropertyDescriptor.cs
- TdsParserHelperClasses.cs
- CommandBindingCollection.cs
- IndentTextWriter.cs
- ToolBar.cs
- PackUriHelper.cs
- SafeArchiveContext.cs
- AdapterSwitches.cs
- ProcessHost.cs
- XmlMembersMapping.cs
- TabControlCancelEvent.cs
- DataBoundLiteralControl.cs
- FolderBrowserDialogDesigner.cs
- Inflater.cs
- WebPartRestoreVerb.cs
- TriggerActionCollection.cs
- Content.cs
- Trace.cs
- BaseResourcesBuildProvider.cs
- TrackingServices.cs
- EntityDataSourceWrapperCollection.cs
- DetailsViewInsertedEventArgs.cs
- ConnectionProviderAttribute.cs
- AttributeExtensions.cs
- UndoManager.cs
- SerializerProvider.cs
- NetMsmqBindingCollectionElement.cs
- StorageConditionPropertyMapping.cs
- InfoCardMetadataExchangeClient.cs
- ConfigXmlCDataSection.cs
- LogArchiveSnapshot.cs
- Menu.cs
- DateTimeFormat.cs
- ToolStripContentPanelRenderEventArgs.cs
- WeakReferenceEnumerator.cs
- SafeRightsManagementPubHandle.cs
- CodeLabeledStatement.cs
- CheckBoxField.cs
- TempFiles.cs
- EventLogEntry.cs
- WindowsMenu.cs
- ReadOnlyNameValueCollection.cs
- StateWorkerRequest.cs
- CodeExpressionStatement.cs
- ImpersonationContext.cs
- InvokeMemberBinder.cs
- Int64.cs
- InstanceDataCollection.cs
- KeyMatchBuilder.cs
- TemplateContentLoader.cs
- CalendarDesigner.cs
- SqlGatherConsumedAliases.cs
- PolicyManager.cs
- ForEachDesigner.xaml.cs
- DataGridViewSelectedRowCollection.cs
- WebPartEventArgs.cs
- LinkUtilities.cs
- CompareInfo.cs
- WebPartConnectionsConfigureVerb.cs
- ChannelServices.cs
- AssemblyResolver.cs
- StringFormat.cs
- PageSettings.cs
- ADConnectionHelper.cs
- HttpServerVarsCollection.cs
- SqlMethodCallConverter.cs