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
- XamlPathDataSerializer.cs
- TrustManagerPromptUI.cs
- PolyBezierSegment.cs
- Assembly.cs
- GridPattern.cs
- XmlReader.cs
- DataTable.cs
- MSAAEventDispatcher.cs
- Int16AnimationBase.cs
- Select.cs
- TextDecoration.cs
- ManagementObject.cs
- AdornerPresentationContext.cs
- RelatedImageListAttribute.cs
- MarkupExtensionReturnTypeAttribute.cs
- LoginName.cs
- ZipIOExtraFieldElement.cs
- ToolStripItemEventArgs.cs
- CFStream.cs
- StringAttributeCollection.cs
- OciHandle.cs
- ClipboardData.cs
- ParseHttpDate.cs
- TextEndOfParagraph.cs
- EntityTransaction.cs
- DataViewManagerListItemTypeDescriptor.cs
- TextTreeExtractElementUndoUnit.cs
- CollectionViewGroupRoot.cs
- StubHelpers.cs
- DocumentSchemaValidator.cs
- InputManager.cs
- FieldDescriptor.cs
- DoubleAnimationClockResource.cs
- SqlBulkCopy.cs
- CodeArrayIndexerExpression.cs
- ParentQuery.cs
- ServiceModelEnumValidator.cs
- Rotation3D.cs
- WebBrowserDocumentCompletedEventHandler.cs
- TreeNodeConverter.cs
- TransportContext.cs
- Double.cs
- ReaderOutput.cs
- StreamWriter.cs
- PageParserFilter.cs
- MimeTypeMapper.cs
- unsafenativemethodsother.cs
- SelectorItemAutomationPeer.cs
- XmlReflectionImporter.cs
- X509ServiceCertificateAuthenticationElement.cs
- ScriptDescriptor.cs
- FigureParagraph.cs
- HealthMonitoringSection.cs
- ReverseQueryOperator.cs
- RequestStatusBarUpdateEventArgs.cs
- AdministrationHelpers.cs
- DataPagerField.cs
- DataGridViewSelectedColumnCollection.cs
- PerformanceCounterPermissionAttribute.cs
- ChineseLunisolarCalendar.cs
- TypeBuilderInstantiation.cs
- CryptoApi.cs
- XamlReader.cs
- HtmlInputRadioButton.cs
- Identity.cs
- ParseNumbers.cs
- GridEntry.cs
- StorageTypeMapping.cs
- OleAutBinder.cs
- WindowsBrush.cs
- PrintPreviewControl.cs
- SkipQueryOptionExpression.cs
- NavigationProperty.cs
- SafeWaitHandle.cs
- DateTimeFormatInfoScanner.cs
- ProcessManager.cs
- EmptyElement.cs
- JsonFormatGeneratorStatics.cs
- AuthorizationSection.cs
- AttachInfo.cs
- ErrorHandler.cs
- DataGridRowClipboardEventArgs.cs
- Drawing.cs
- SurrogateDataContract.cs
- VariableModifiersHelper.cs
- XAMLParseException.cs
- VirtualizingStackPanel.cs
- DbConnectionPoolGroup.cs
- DrawingImage.cs
- DispatchWrapper.cs
- XMLDiffLoader.cs
- ModuleElement.cs
- ProbeMatchesMessageCD1.cs
- QueryStringParameter.cs
- Size3DConverter.cs
- FixedElement.cs
- FreezableCollection.cs
- TextFormatterHost.cs
- PermissionSetTriple.cs
- DefaultTraceListener.cs