Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Automation / Peers / GenericRootAutomationPeer.cs / 1305600 / 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
- QueryOperationResponseOfT.cs
- EntityTransaction.cs
- TemplateControlBuildProvider.cs
- ObjectDisposedException.cs
- NonNullItemCollection.cs
- FunctionDescription.cs
- contentDescriptor.cs
- NameTable.cs
- Typeface.cs
- TargetControlTypeAttribute.cs
- BindUriHelper.cs
- SymbolEqualComparer.cs
- StrokeIntersection.cs
- AssociatedControlConverter.cs
- ItemsPresenter.cs
- ALinqExpressionVisitor.cs
- TextTreeTextNode.cs
- ExpressionPrinter.cs
- PersistNameAttribute.cs
- ClientScriptManager.cs
- StoryFragments.cs
- Transactions.cs
- BulletDecorator.cs
- ComboBox.cs
- DownloadProgressEventArgs.cs
- CompilationUtil.cs
- EdmItemCollection.cs
- Variable.cs
- ADMembershipUser.cs
- FormatConvertedBitmap.cs
- ClosureBinding.cs
- SqlCacheDependencySection.cs
- AssociationSetEnd.cs
- HybridDictionary.cs
- ContextStaticAttribute.cs
- ImageListUtils.cs
- FolderLevelBuildProvider.cs
- Quaternion.cs
- IntPtr.cs
- Vector3D.cs
- RowToParametersTransformer.cs
- CheckBoxRenderer.cs
- ProjectedSlot.cs
- AbstractDataSvcMapFileLoader.cs
- SecondaryIndex.cs
- Point.cs
- UnmanagedMemoryStream.cs
- WhereaboutsReader.cs
- XPathDocumentBuilder.cs
- IPEndPointCollection.cs
- IdentityModelDictionary.cs
- LineGeometry.cs
- SimpleModelProvider.cs
- OdbcPermission.cs
- ReachPrintTicketSerializerAsync.cs
- SID.cs
- XmlUrlResolver.cs
- EventPropertyMap.cs
- CalendarBlackoutDatesCollection.cs
- FontConverter.cs
- Request.cs
- HMAC.cs
- ZipArchive.cs
- WebServiceHost.cs
- XPathNodeIterator.cs
- ClientEventManager.cs
- SystemSounds.cs
- DataGridViewIntLinkedList.cs
- PluralizationServiceUtil.cs
- ViewCellRelation.cs
- EmptyQuery.cs
- ReliableChannelFactory.cs
- Binding.cs
- Accessible.cs
- DoubleAnimationClockResource.cs
- DBAsyncResult.cs
- loginstatus.cs
- ChildTable.cs
- HitTestParameters3D.cs
- XmlSignificantWhitespace.cs
- Int16Storage.cs
- TaskResultSetter.cs
- AudioFormatConverter.cs
- SystemKeyConverter.cs
- AppSettingsReader.cs
- ServiceProviders.cs
- IdentityHolder.cs
- _SslSessionsCache.cs
- Rotation3DAnimationBase.cs
- Int16AnimationBase.cs
- GenericTypeParameterBuilder.cs
- ObjectDataSourceEventArgs.cs
- BuildProvidersCompiler.cs
- ApplicationCommands.cs
- SineEase.cs
- SqlStream.cs
- MDIControlStrip.cs
- Parameter.cs
- StorageMappingFragment.cs
- HeaderUtility.cs