GenericRootAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK