Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / WindowAutomationPeer.cs / 1305600 / 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
- TimeSpanSecondsOrInfiniteConverter.cs
- SHA1CryptoServiceProvider.cs
- MenuItem.cs
- OleDbCommand.cs
- SqlParameterCollection.cs
- FormsAuthenticationEventArgs.cs
- EndEvent.cs
- ListBindingConverter.cs
- Brush.cs
- CultureInfo.cs
- cookie.cs
- AuthenticationConfig.cs
- XmlSchemaInclude.cs
- TransformerInfoCollection.cs
- StagingAreaInputItem.cs
- ErrorEventArgs.cs
- StateDesigner.Helpers.cs
- UserNameSecurityTokenProvider.cs
- BitmapImage.cs
- DefaultTextStore.cs
- SignedXmlDebugLog.cs
- DependencyObjectPropertyDescriptor.cs
- CheckBox.cs
- WindowVisualStateTracker.cs
- AmbiguousMatchException.cs
- DateTimeFormatInfo.cs
- PagedDataSource.cs
- SmiSettersStream.cs
- DBCommand.cs
- RadioButtonAutomationPeer.cs
- Bind.cs
- DataPagerCommandEventArgs.cs
- TextModifierScope.cs
- DataSourceControlBuilder.cs
- BuildResult.cs
- BinaryObjectReader.cs
- PageParserFilter.cs
- NotSupportedException.cs
- TreeNodeStyle.cs
- HttpEncoder.cs
- DesignTimeTemplateParser.cs
- SafeEventHandle.cs
- ProvidePropertyAttribute.cs
- SafeTimerHandle.cs
- ProtocolsConfigurationEntry.cs
- SelectionEditor.cs
- DataTableNewRowEvent.cs
- ProcessThread.cs
- SEHException.cs
- TreeNodeConverter.cs
- TypeSource.cs
- CustomCategoryAttribute.cs
- ArgumentOutOfRangeException.cs
- AdornerHitTestResult.cs
- DataGridViewCellEventArgs.cs
- DefaultHttpHandler.cs
- DesignerTransactionCloseEvent.cs
- BasicCellRelation.cs
- CallbackTimeoutsBehavior.cs
- MustUnderstandBehavior.cs
- Thumb.cs
- WSSecurityJan2004.cs
- WebPartChrome.cs
- prompt.cs
- Recipient.cs
- DateTimeValueSerializerContext.cs
- DataGridPagerStyle.cs
- Clause.cs
- PackageRelationshipSelector.cs
- ValidatorAttribute.cs
- GlobalEventManager.cs
- PerspectiveCamera.cs
- ConstructorBuilder.cs
- exports.cs
- TextParagraphCache.cs
- Visual3D.cs
- TopClause.cs
- COM2PictureConverter.cs
- ManagementObject.cs
- RowBinding.cs
- ComboBox.cs
- AutomationPropertyInfo.cs
- TransactionChannelFactory.cs
- DataGridViewBand.cs
- XmlCustomFormatter.cs
- Parameter.cs
- CaseInsensitiveComparer.cs
- GestureRecognizer.cs
- MimeObjectFactory.cs
- TextServicesCompartmentEventSink.cs
- MasterPage.cs
- RuntimeHandles.cs
- TextContainerHelper.cs
- OptimizerPatterns.cs
- MissingManifestResourceException.cs
- GlobalProxySelection.cs
- TypeLoadException.cs
- DictationGrammar.cs
- StrongNameMembershipCondition.cs
- ResumeStoryboard.cs