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
- GridViewRow.cs
- InstallerTypeAttribute.cs
- ProcessInfo.cs
- MessageFilterTable.cs
- NativeWindow.cs
- FileDialog.cs
- DateTimeConverter.cs
- DomainUpDown.cs
- CancellationHandlerDesigner.cs
- Point4D.cs
- DynamicValueConverter.cs
- PeerInvitationResponse.cs
- RepeatButton.cs
- SearchForVirtualItemEventArgs.cs
- DataPagerFieldCommandEventArgs.cs
- StringConcat.cs
- DataPager.cs
- Comparer.cs
- TextFormattingConverter.cs
- ResourceManager.cs
- BoundPropertyEntry.cs
- CloudCollection.cs
- ProcessThread.cs
- Encoder.cs
- TreeNode.cs
- XDRSchema.cs
- GenericWebPart.cs
- ImageDrawing.cs
- EditBehavior.cs
- URI.cs
- TimelineCollection.cs
- ISAPIWorkerRequest.cs
- PrintControllerWithStatusDialog.cs
- AccessControlEntry.cs
- UIElement3D.cs
- Pkcs7Recipient.cs
- ScrollViewerAutomationPeer.cs
- DecimalKeyFrameCollection.cs
- TextEndOfParagraph.cs
- XmlDataSourceNodeDescriptor.cs
- BooleanFacetDescriptionElement.cs
- AggregateException.cs
- DependencyStoreSurrogate.cs
- _LocalDataStore.cs
- LifetimeServices.cs
- SoapReflectionImporter.cs
- WebResourceAttribute.cs
- ResourceDisplayNameAttribute.cs
- _RegBlobWebProxyDataBuilder.cs
- CollectionViewSource.cs
- Screen.cs
- GeneratedContractType.cs
- cookie.cs
- OleDbConnectionInternal.cs
- PeerNameRegistration.cs
- Int32Animation.cs
- Rect.cs
- Primitive.cs
- OracleConnectionString.cs
- BitmapEffectRenderDataResource.cs
- BrowserTree.cs
- FileRegion.cs
- Vector3dCollection.cs
- DBDataPermissionAttribute.cs
- WebPartTransformerCollection.cs
- ThreadAbortException.cs
- DependencyObjectType.cs
- ZipIORawDataFileBlock.cs
- EnumValAlphaComparer.cs
- EntityTemplateFactory.cs
- DoubleConverter.cs
- infer.cs
- AppDomainAttributes.cs
- CompilerLocalReference.cs
- LassoHelper.cs
- DesignerDataParameter.cs
- _Connection.cs
- ServiceDefaults.cs
- TypedReference.cs
- Literal.cs
- EnumValAlphaComparer.cs
- SecurityDocument.cs
- MenuCommands.cs
- ApplicationSecurityManager.cs
- FileDataSourceCache.cs
- NativeCompoundFileAPIs.cs
- QueryFunctions.cs
- ActiveDocumentEvent.cs
- OdbcInfoMessageEvent.cs
- HttpResponse.cs
- WebServiceReceive.cs
- Attributes.cs
- HtmlMeta.cs
- ToolStripSeparatorRenderEventArgs.cs
- GroupItemAutomationPeer.cs
- XomlCompilerResults.cs
- Token.cs
- ToolZoneDesigner.cs
- EnvironmentPermission.cs
- FileDialog.cs