SystemInformation Class

Definition

Provides information about the current system environment.

public ref class SystemInformation
public ref class SystemInformation abstract sealed
public class SystemInformation
public static class SystemInformation
type SystemInformation = class
Public Class SystemInformation
Inheritance
SystemInformation

Examples

The following code example lists all properties of the SystemInformation class in a ListBox and displays the current value of the property in a TextBox when a list item selected.

#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::Drawing;
using namespace System::Reflection;
using namespace System::Windows::Forms;
public ref class SystemInfoBrowserForm: public System::Windows::Forms::Form
{
private:
   System::Windows::Forms::ListBox^ listBox1;
   System::Windows::Forms::TextBox^ textBox1;

public:
   SystemInfoBrowserForm()
   {
      this->SuspendLayout();
      InitForm();
      
      // Add each property of the SystemInformation class to the list box.
      Type^ t = System::Windows::Forms::SystemInformation::typeid;
      array<PropertyInfo^>^pi = t->GetProperties();
      for ( int i = 0; i < pi->Length; i++ )
         listBox1->Items->Add( pi[ i ]->Name );
      textBox1->Text = String::Format( "The SystemInformation class has {0} properties.\r\n", pi->Length );
      
      // Configure the list item selected handler for the list box to invoke a 
      // method that displays the value of each property.
      listBox1->SelectedIndexChanged += gcnew EventHandler( this, &SystemInfoBrowserForm::listBox1_SelectedIndexChanged );
      this->ResumeLayout( false );
   }


private:
   void listBox1_SelectedIndexChanged( Object^ /*sender*/, EventArgs^ /*e*/ )
   {
      
      // Return if no list item is selected.
      if ( listBox1->SelectedIndex == -1 )
            return;

      
      // Get the property name from the list item.
      String^ propname = listBox1->Text;
      if ( propname->Equals( "PowerStatus" ) )
      {
         
         // Cycle and display the values of each property of the PowerStatus property.
         textBox1->Text = String::Concat( textBox1->Text, "\r\nThe value of the PowerStatus property is:" );
         Type^ t = System::Windows::Forms::PowerStatus::typeid;
         array<PropertyInfo^>^pi = t->GetProperties();
         for ( int i = 0; i < pi->Length; i++ )
         {
            Object^ propval = pi[ i ]->GetValue( SystemInformation::PowerStatus, nullptr );
            textBox1->Text = String::Format( "{0}\r\n    PowerStatus.{1} is: {2}", textBox1->Text, pi[ i ]->Name, propval );

         }
      }
      else
      {
         
         // Display the value of the selected property of the SystemInformation type.
         Type^ t = System::Windows::Forms::SystemInformation::typeid;
         array<PropertyInfo^>^pi = t->GetProperties();
         PropertyInfo^ prop = nullptr;
         for ( int i = 0; i < pi->Length; i++ )
            if ( pi[ i ]->Name == propname )
            {
               prop = pi[ i ];
               break;
            }
         Object^ propval = prop->GetValue( nullptr, nullptr );
         textBox1->Text = String::Format( "{0}\r\nThe value of the {1} property is: {2}", textBox1->Text, propname, propval );
      }
   }

   void InitForm()
   {
      
      // Initialize the form settings
      this->listBox1 = gcnew System::Windows::Forms::ListBox;
      this->textBox1 = gcnew System::Windows::Forms::TextBox;
      this->listBox1->Anchor = (System::Windows::Forms::AnchorStyles)(System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left | System::Windows::Forms::AnchorStyles::Right);
      this->listBox1->Location = System::Drawing::Point( 8, 16 );
      this->listBox1->Size = System::Drawing::Size( 172, 496 );
      this->listBox1->TabIndex = 0;
      this->textBox1->Anchor = (System::Windows::Forms::AnchorStyles)(System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right);
      this->textBox1->Location = System::Drawing::Point( 188, 16 );
      this->textBox1->Multiline = true;
      this->textBox1->ScrollBars = System::Windows::Forms::ScrollBars::Vertical;
      this->textBox1->Size = System::Drawing::Size( 420, 496 );
      this->textBox1->TabIndex = 1;
      this->ClientSize = System::Drawing::Size( 616, 525 );
      this->Controls->Add( this->textBox1 );
      this->Controls->Add( this->listBox1 );
      this->Text = "Select a SystemInformation property to get the value of";
   }

};


[STAThread]
int main()
{
   Application::Run( gcnew SystemInfoBrowserForm );
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;

namespace SystemInfoBrowser
{
    public class SystemInfoBrowserForm : System.Windows.Forms.Form
    {
        private System.Windows.Forms.ListBox listBox1;
        private System.Windows.Forms.TextBox textBox1;        
        
        public SystemInfoBrowserForm()
        {
            this.SuspendLayout();
            InitForm();
            
            // Add each property of the SystemInformation class to the list box.
            Type t = typeof(System.Windows.Forms.SystemInformation);            
            PropertyInfo[] pi = t.GetProperties();            
            for( int i=0; i<pi.Length; i++ )
                listBox1.Items.Add( pi[i].Name );            
            textBox1.Text = "The SystemInformation class has "+pi.Length.ToString()+" properties.\r\n";

            // Configure the list item selected handler for the list box to invoke a 
            // method that displays the value of each property.
            listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
            this.ResumeLayout(false);
        }
        
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Return if no list item is selected.
            if( listBox1.SelectedIndex == -1 ) return;
            // Get the property name from the list item.
            string propname = listBox1.Text;
            
            if( propname == "PowerStatus" )
            {
                // Cycle and display the values of each property of the PowerStatus property.
                textBox1.Text += "\r\nThe value of the PowerStatus property is:";                                
                Type t = typeof(System.Windows.Forms.PowerStatus);
                PropertyInfo[] pi = t.GetProperties();            
                for( int i=0; i<pi.Length; i++ )
                {
                    object propval = pi[i].GetValue(SystemInformation.PowerStatus, null);            
                    textBox1.Text += "\r\n    PowerStatus."+pi[i].Name+" is: "+propval.ToString();
                }
            }
            else
            {
                // Display the value of the selected property of the SystemInformation type.
                Type t = typeof(System.Windows.Forms.SystemInformation);
                PropertyInfo[] pi = t.GetProperties();            
                PropertyInfo prop = null;
                for( int i=0; i<pi.Length; i++ )
                    if( pi[i].Name == propname )
                    {
                        prop = pi[i];
                        break;           
                    }
                object propval = prop.GetValue(null, null);            
                textBox1.Text += "\r\nThe value of the "+propname+" property is: "+propval.ToString();
            }
        }

        private void InitForm()
        {
            // Initialize the form settings
            this.listBox1 = new System.Windows.Forms.ListBox();
            this.textBox1 = new System.Windows.Forms.TextBox();            
            this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));
            this.listBox1.Location = new System.Drawing.Point(8, 16);
            this.listBox1.Size = new System.Drawing.Size(172, 496);
            this.listBox1.TabIndex = 0;            
            this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
                | System.Windows.Forms.AnchorStyles.Right)));
            this.textBox1.Location = new System.Drawing.Point(188, 16);
            this.textBox1.Multiline = true;
            this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;           
            this.textBox1.Size = new System.Drawing.Size(420, 496);
            this.textBox1.TabIndex = 1;            
            this.ClientSize = new System.Drawing.Size(616, 525);            
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.listBox1);            
            this.Text = "Select a SystemInformation property to get the value of";                   
        }

        [STAThread]
        static void Main() 
        {
            Application.Run(new SystemInfoBrowserForm());
        }
    }
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Reflection
Imports System.Windows.Forms

Public Class SystemInfoBrowserForm
    Inherits System.Windows.Forms.Form
    
    Private listBox1 As System.Windows.Forms.ListBox
    Private textBox1 As System.Windows.Forms.TextBox  
    
    Public Sub New()
        Me.SuspendLayout()
        InitForm()
        
        ' Add each property of the SystemInformation class to the list box.
        Dim t As Type = GetType(System.Windows.Forms.SystemInformation)
        Dim pi As PropertyInfo() = t.GetProperties()
        Dim i As Integer
        For i = 0 To pi.Length - 1
            listBox1.Items.Add(pi(i).Name)
        Next i
        textBox1.Text = "The SystemInformation class has " + pi.Length.ToString() + " properties." + ControlChars.CrLf
        
        ' Configure the list item selected handler for the list box to invoke a 
        ' method that displays the value of each property.
        AddHandler listBox1.SelectedIndexChanged, AddressOf listBox1_SelectedIndexChanged
        
        Me.ResumeLayout(False)
    End Sub    
    
    Private Sub listBox1_SelectedIndexChanged(sender As Object, e As EventArgs)
        ' Return if no list item is selected.
        If listBox1.SelectedIndex = - 1 Then
            Return
        End If         
        ' Get the property name from the list item.
        Dim propname As String = listBox1.Text
        
        If propname = "PowerStatus" Then
            ' Cycle and display the values of each property of the PowerStatus property.
            textBox1.Text += ControlChars.CrLf + "The value of the PowerStatus property is:"
            Dim t As Type = GetType(System.Windows.Forms.PowerStatus)
            Dim pi As PropertyInfo() = t.GetProperties()
            Dim i As Integer
            For i = 0 To pi.Length - 1
                Dim propval As Object = pi(i).GetValue(SystemInformation.PowerStatus, Nothing)
                textBox1.Text += ControlChars.CrLf + "    PowerStatus." + pi(i).Name + " is: " + propval.ToString()
            Next i
        Else
            ' Display the value of the selected property of the SystemInformation type.
            Dim t As Type = GetType(System.Windows.Forms.SystemInformation)
            Dim pi As PropertyInfo() = t.GetProperties()
            Dim prop As PropertyInfo = Nothing
            Dim i As Integer
            For i = 0 To pi.Length - 1
                If pi(i).Name = propname Then
                    prop = pi(i)
                    Exit For
                End If
            Next i
            Dim propval As Object = prop.GetValue(Nothing, Nothing)
            textBox1.Text += ControlChars.CrLf + "The value of the " + propname + " property is: " + propval.ToString()
        End If
    End Sub    
    
    Private Sub InitForm()
        ' Initialize the form settings
        Me.listBox1 = New System.Windows.Forms.ListBox()
        Me.textBox1 = New System.Windows.Forms.TextBox()
        Me.listBox1.Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles)
        Me.listBox1.Location = New System.Drawing.Point(8, 16)
        Me.listBox1.Size = New System.Drawing.Size(172, 496)
        Me.listBox1.TabIndex = 0
        Me.textBox1.Anchor = CType(System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right, System.Windows.Forms.AnchorStyles)
        Me.textBox1.Location = New System.Drawing.Point(188, 16)
        Me.textBox1.Multiline = True
        Me.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
        Me.textBox1.Size = New System.Drawing.Size(420, 496)
        Me.textBox1.TabIndex = 1
        Me.ClientSize = New System.Drawing.Size(616, 525)
        Me.Controls.Add(Me.textBox1)
        Me.Controls.Add(Me.listBox1)
        Me.Text = "Select a SystemInformation property to get the value of"
    End Sub
        
    <STAThread()>  _
    Shared Sub Main()
        Application.Run(New SystemInfoBrowserForm())
    End Sub

End Class

Remarks

The SystemInformation class provides static properties that can be used to get information about the current system environment. The class provides access to information such as Windows display element sizes, operating system settings, network availability, and the capabilities of hardware installed on the system. This class cannot be instantiated.

For more information about system-wide parameters, see SystemParametersInfo.

Properties

ActiveWindowTrackingDelay

Gets the active window tracking delay.

ArrangeDirection

Gets a value that indicates the direction in which the operating system arranges minimized windows.

ArrangeStartingPosition

Gets an ArrangeStartingPosition value that indicates the starting position from which the operating system arranges minimized windows.

BootMode

Gets a BootMode value that indicates the boot mode the system was started in.

Border3DSize

Gets the thickness, in pixels, of a three-dimensional (3-D) style window or system control border.

BorderMultiplierFactor

Gets the border multiplier factor that is used when determining the thickness of a window's sizing border.

BorderSize

Gets the thickness, in pixels, of a flat-style window or system control border.

CaptionButtonSize

Gets the standard size, in pixels, of a button in a window's title bar.

CaptionHeight

Gets the height, in pixels, of the standard title bar area of a window.

CaretBlinkTime

Gets the caret blink time.

CaretWidth

Gets the width, in pixels, of the caret in edit controls.

ComputerName

Gets the NetBIOS computer name of the local computer.

CursorSize

Gets the maximum size, in pixels, that a cursor can occupy.

DbcsEnabled

Gets a value indicating whether the operating system is capable of handling double-byte character set (DBCS) characters.

DebugOS

Gets a value indicating whether the debug version of USER.EXE is installed.

DoubleClickSize

Gets the dimensions, in pixels, of the area within which the user must click twice for the operating system to consider the two clicks a double-click.

DoubleClickTime

Gets the maximum number of milliseconds that can elapse between a first click and a second click for the OS to consider the mouse action a double-click.

DragFullWindows

Gets a value indicating whether the user has enabled full window drag.

DragSize

Gets the width and height of a rectangle centered on the point the mouse button was pressed, within which a drag operation will not begin.

FixedFrameBorderSize

Gets the thickness, in pixels, of the frame border of a window that has a caption and is not resizable.

FontSmoothingContrast

Gets the font smoothing contrast value used in ClearType smoothing.

FontSmoothingType

Gets the current type of font smoothing.

FrameBorderSize

Gets the thickness, in pixels, of the resizing border that is drawn around the perimeter of a window that is being drag resized.

HighContrast

Gets a value indicating whether the user has enabled the high-contrast mode accessibility feature.

HorizontalFocusThickness

Gets the thickness of the left and right edges of the system focus rectangle, in pixels.

HorizontalResizeBorderThickness

Gets the thickness of the left and right edges of the sizing border around the perimeter of a window being resized, in pixels.

HorizontalScrollBarArrowWidth

Gets the width, in pixels, of the arrow bitmap on the horizontal scroll bar.

HorizontalScrollBarHeight

Gets the default height, in pixels, of the horizontal scroll bar.

HorizontalScrollBarThumbWidth

Gets the width, in pixels, of the scroll box in a horizontal scroll bar.

IconHorizontalSpacing

Gets the width, in pixels, of an icon arrangement cell in large icon view.

IconSize

Gets the dimensions, in pixels, of the Windows default program icon size.

IconSpacingSize

Gets the size, in pixels, of the grid square used to arrange icons in a large-icon view.

IconVerticalSpacing

Gets the height, in pixels, of an icon arrangement cell in large icon view.

IsActiveWindowTrackingEnabled

Gets a value indicating whether active window tracking is enabled.

IsComboBoxAnimationEnabled

Gets a value indicating whether the slide-open effect for combo boxes is enabled.

IsDropShadowEnabled

Gets a value indicating whether the drop shadow effect is enabled.

IsFlatMenuEnabled

Gets a value indicating whether native user menus have a flat menu appearance.

IsFontSmoothingEnabled

Gets a value indicating whether font smoothing is enabled.

IsHotTrackingEnabled

Gets a value indicating whether hot tracking of user-interface elements, such as menu names on menu bars, is enabled.

IsIconTitleWrappingEnabled

Gets a value indicating whether icon-title wrapping is enabled.

IsKeyboardPreferred

Gets a value indicating whether the user relies on the keyboard instead of the mouse, and prefers applications to display keyboard interfaces that would otherwise be hidden.

IsListBoxSmoothScrollingEnabled

Gets a value indicating whether the smooth-scrolling effect for list boxes is enabled.

IsMenuAnimationEnabled

Gets a value indicating whether menu fade or slide animation features are enabled.

IsMenuFadeEnabled

Gets a value indicating whether menu fade animation is enabled.

IsMinimizeRestoreAnimationEnabled

Gets a value indicating whether window minimize and restore animation is enabled.

IsSelectionFadeEnabled

Gets a value indicating whether the selection fade effect is enabled.

IsSnapToDefaultEnabled

Gets a value indicating whether the snap-to-default-button feature is enabled.

IsTitleBarGradientEnabled

Gets a value indicating whether the gradient effect for window title bars is enabled.

IsToolTipAnimationEnabled

Gets a value indicating whether ToolTip animation is enabled.

KanjiWindowHeight

Gets the height, in pixels, of the Kanji window at the bottom of the screen for double-byte character set (DBCS) versions of Windows.

KeyboardDelay

Gets the keyboard repeat-delay setting.

KeyboardSpeed

Gets the keyboard repeat-speed setting.

MaxWindowTrackSize

Gets the default maximum dimensions, in pixels, of a window that has a caption and sizing borders.

MenuAccessKeysUnderlined

Gets a value indicating whether menu access keys are always underlined.

MenuBarButtonSize

Gets the default width, in pixels, for menu-bar buttons and the height, in pixels, of a menu bar.

MenuButtonSize

Gets the default dimensions, in pixels, of menu-bar buttons.

MenuCheckSize

Gets the dimensions, in pixels, of the default size of a menu check mark area.

MenuFont

Gets the font used to display text on menus.

MenuHeight

Gets the height, in pixels, of one line of a menu.

MenuShowDelay

Gets the time, in milliseconds, that the system waits before displaying a cascaded shortcut menu when the mouse cursor is over a submenu item.

MidEastEnabled

Gets a value indicating whether the operating system is enabled for the Hebrew and Arabic languages.

MinimizedWindowSize

Gets the dimensions, in pixels, of a normal minimized window.

MinimizedWindowSpacingSize

Gets the dimensions, in pixels, of the area each minimized window is allocated when arranged.

MinimumWindowSize

Gets the minimum width and height for a window, in pixels.

MinWindowTrackSize

Gets the default minimum dimensions, in pixels, that a window may occupy during a drag resize.

MonitorCount

Gets the number of display monitors on the desktop.

MonitorsSameDisplayFormat

Gets a value indicating whether all the display monitors are using the same pixel color format.

MouseButtons

Gets the number of buttons on the mouse.

MouseButtonsSwapped

Gets a value indicating whether the functions of the left and right mouse buttons have been swapped.

MouseHoverSize

Gets the dimensions, in pixels, of the rectangle within which the mouse pointer has to stay for the mouse hover time before a mouse hover message is generated.

MouseHoverTime

Gets the time, in milliseconds, that the mouse pointer has to stay in the hover rectangle before a mouse hover message is generated.

MousePresent

Gets a value indicating whether a pointing device is installed.

MouseSpeed

Gets the current mouse speed.

MouseWheelPresent

Gets a value indicating whether a mouse with a mouse wheel is installed.

MouseWheelScrollDelta

Gets the amount of the delta value of a single mouse wheel rotation increment.

MouseWheelScrollLines

Gets the number of lines to scroll when the mouse wheel is rotated.

NativeMouseWheelSupport

Gets a value indicating whether a mouse with a mouse wheel is installed.

Network

Gets a value indicating whether a network connection is present.

PenWindows

Gets a value indicating whether the Microsoft Windows for Pen Computing extensions are installed.

PopupMenuAlignment

Gets the side of pop-up menus that are aligned to the corresponding menu-bar item.

PowerStatus

Gets the current system power status.

PrimaryMonitorMaximizedWindowSize

Gets the default dimensions, in pixels, of a maximized window on the primary display.

PrimaryMonitorSize

Gets the dimensions, in pixels, of the current video mode of the primary display.

RightAlignedMenus

Gets a value indicating whether drop-down menus are right-aligned with the corresponding menu-bar item.

ScreenOrientation

Gets the orientation of the screen.

Secure

Gets a value indicating whether a Security Manager is present on this operating system.

ShowSounds

Gets a value indicating whether the user prefers that an application present information in visual form in situations when it would present the information in audible form.

SizingBorderWidth

Gets the width, in pixels, of the sizing border drawn around the perimeter of a window being resized.

SmallCaptionButtonSize

Gets the width, in pixels, of small caption buttons, and the height, in pixels, of small captions.

SmallIconSize

Gets the dimensions, in pixels, of a small icon.

TerminalServerSession

Gets a value indicating whether the calling process is associated with a Terminal Services client session.

ToolWindowCaptionButtonSize

Gets the dimensions, in pixels, of small caption buttons.

ToolWindowCaptionHeight

Gets the height, in pixels, of a tool window caption.

UIEffectsEnabled

Gets a value indicating whether user interface (UI) effects are enabled or disabled.

UserDomainName

Gets the name of the domain the user belongs to.

UserInteractive

Gets a value indicating whether the current process is running in user-interactive mode.

UserName

Gets the user name associated with the current thread.

VerticalFocusThickness

Gets the thickness, in pixels, of the top and bottom edges of the system focus rectangle.

VerticalResizeBorderThickness

Gets the thickness, in pixels, of the top and bottom edges of the sizing border around the perimeter of a window being resized.

VerticalScrollBarArrowHeight

Gets the height, in pixels, of the arrow bitmap on the vertical scroll bar.

VerticalScrollBarThumbHeight

Gets the height, in pixels, of the scroll box in a vertical scroll bar.

VerticalScrollBarWidth

Gets the default width, in pixels, of the vertical scroll bar.

VirtualScreen

Gets the bounds of the virtual screen.

WorkingArea

Gets the size, in pixels, of the working area of the screen.

Methods

GetBorderSizeForDpi(Int32)

Gets the thickness, in pixels, of a flat-style window or system control border for a given DPI value.

GetHorizontalScrollBarArrowWidthForDpi(Int32)

Gets the width of the horizontal scroll bar arrow bitmap in pixels.

GetHorizontalScrollBarHeightForDpi(Int32)

Gets the default height, in pixels, of the horizontal scroll bar for a given DPI value.

GetMenuFontForDpi(Int32)

Gets the font used to display text on menus for use in changing the DPI for a given display device.

GetVerticalScrollBarWidthForDpi(Int32)

Gets the default height, in pixels, of the vertical scroll bar for a given DPI value.

VerticalScrollBarArrowHeightForDpi(Int32)

Gets the height of the vertical scroll bar arrow bitmap in pixels.

Applies to

See also