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
- Stroke2.cs
- XhtmlBasicCalendarAdapter.cs
- DataKeyCollection.cs
- SQLInt64Storage.cs
- ServiceNameElement.cs
- ComplusEndpointConfigContainer.cs
- EditBehavior.cs
- CodeArrayCreateExpression.cs
- LinkDescriptor.cs
- RichTextBox.cs
- TriggerBase.cs
- RuntimeIdentifierPropertyAttribute.cs
- CodePageEncoding.cs
- ListItemsCollectionEditor.cs
- TextFormatter.cs
- XPathPatternParser.cs
- InputLanguageEventArgs.cs
- SystemWebSectionGroup.cs
- ProjectionPruner.cs
- ModifierKeysConverter.cs
- StopStoryboard.cs
- ToolStripSplitButton.cs
- AttachedProperty.cs
- BidOverLoads.cs
- HTMLTagNameToTypeMapper.cs
- TypographyProperties.cs
- NonBatchDirectoryCompiler.cs
- SchemaLookupTable.cs
- AssemblyHelper.cs
- NumericExpr.cs
- Splitter.cs
- ColumnTypeConverter.cs
- ToolStripItemDataObject.cs
- Condition.cs
- MasterPageParser.cs
- CollaborationHelperFunctions.cs
- IDictionary.cs
- LinqToSqlWrapper.cs
- BitmapEffectInputData.cs
- Int32Converter.cs
- TypeNameConverter.cs
- SubpageParagraph.cs
- DBSqlParserColumnCollection.cs
- OrderByExpression.cs
- XmlnsCache.cs
- IPeerNeighbor.cs
- ExpressionValueEditor.cs
- DataControlButton.cs
- SharedUtils.cs
- WeakReferenceEnumerator.cs
- XmlLinkedNode.cs
- ProgressBarRenderer.cs
- log.cs
- COM2Properties.cs
- SessionParameter.cs
- RoutedEventValueSerializer.cs
- CodePropertyReferenceExpression.cs
- OutArgument.cs
- HttpStaticObjectsCollectionWrapper.cs
- EntitySqlQueryCacheKey.cs
- SetStateDesigner.cs
- Point4DValueSerializer.cs
- EntityProviderFactory.cs
- StopStoryboard.cs
- ReadOnlyDataSourceView.cs
- DataGridViewCellValidatingEventArgs.cs
- FamilyMapCollection.cs
- OrderPreservingSpoolingTask.cs
- SHA384CryptoServiceProvider.cs
- BooleanAnimationUsingKeyFrames.cs
- ListItemCollection.cs
- ReceiveErrorHandling.cs
- DetailsViewInsertEventArgs.cs
- GACIdentityPermission.cs
- TransformerInfoCollection.cs
- InputReferenceExpression.cs
- QueryOpeningEnumerator.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- XmlAttributeOverrides.cs
- Base64Decoder.cs
- ControlCachePolicy.cs
- ManagedFilter.cs
- ImageListStreamer.cs
- WinOEToolBoxItem.cs
- OracleNumber.cs
- WebMessageEncodingElement.cs
- BasicHttpMessageSecurityElement.cs
- WebReferenceOptions.cs
- FileDetails.cs
- MultiSelectRootGridEntry.cs
- HtmlAnchor.cs
- SecurityTimestamp.cs
- XhtmlTextWriter.cs
- AnnotationResource.cs
- Int16Animation.cs
- Substitution.cs
- ConfigurationCollectionAttribute.cs
- SqlMethodCallConverter.cs
- LoginUtil.cs
- ReferenceConverter.cs