SystemInformation은 클래스 이름이 의미하다시피 현재 시스템 환경에 대한 여러 가지 정보를 제공한다. 경계선의 두께, 타이틀 바의 높이, 아이콘의 크기 같은 수치값들은 운영체제 버전이나 테마 설정 등에 따라 달라지므로 상수값을 가정해서는 안되며 항상 이 클래스로 조사한 값을 사용해야 한다. 눈대중으로 조사한 값이나 경험적으로 구한 값을 믿고 사용하게 되면 당장은 문제가 없는 것 같아도 운영체제가 바뀌면 엉뚱한 결과가 나타날 수도 있다.
SystemInformation 클래스의 멤버들은 모두 정적이고 또한 읽기 전용이다. 따라서 굳이 객체를 만들지 않아도 클래스로부터 정적 프로퍼티를 읽어 원하는 값을 바로 구할 수 있다. 닷넷 3.5 기준으로 총 104개나 되는 프로퍼티가 제공되어 왠만한 설정 정보는 이 클래스를 통해 구할 수 있다. 모든 프로퍼티는 읽기 전용이므로 값을 조사할 수만 있을 뿐 변경할 수는 없다. 이중 자주 사용하는 일부만 도표로 정리해 보았다.
프로퍼티 |
타입 |
설명 |
BootMode |
BootMode SR |
정상적으로 부팅한 것인지 아니면 안전 모드로 부팅한 것인지를 조사한다. |
Border3DSize |
Size SR |
3D 스타일의 경계선 크기를 조사한다. Size의 width는 수평 경계선의 폭이며 height는 수직 경계선의 높이이다. |
BorderSize |
Size SR |
경계선의 크기를 조사한다. |
CaptionButtonSize |
Size SR |
타이틀 바에 있는 버튼의 크기를 조사한다. |
CaptionHeight |
int SR |
타이틀 바의 높이를 조사한다. |
ComputerName |
string SR |
컴퓨터 이름을 조사한다. |
DoubleClickSize |
Size SR |
더블 클릭으로 인정할 영역을 조사한다. |
DoubleClickTime |
int SR |
더블 클릭으로 인정할 시간 간격을 1/1000초 단위로 조사한다. 더블 클릭은 일정한 영역내에서 빠른 속도로 두 번 누를 때만 인정된다. |
DragFullWindows |
bool SR |
마우스로 창을 끄는 동안에 윈도우 내용을 표시할 것인가를 조사한다. |
DragSize |
Size SR |
드래그를 시작하기 전에 마우스를 얼마만큼 움직여야 하는지를 지정한다. |
IconSize |
Size SR |
디폴트 아이콘 크기를 픽셀 단위로 조사한다. |
KeyboardDelay |
int SR |
키보드 지연 시간이며 0~3까지의 값을 가진다. |
KeyboardSpeed |
int SR |
키보드 반복 속도이며 0~31까지의 값을 가진다. |
MonitorCount |
int SR |
모니터의 개수이다. |
MouseButtons |
int SR |
마우스 버튼의 개수이다. 마우스가 없으면 0이 된다. |
MouseButtonsSwapped |
bool SR |
마우스 버튼의 좌우를 교체했는지 조사한다. 왼손잡이인 경우 좌우 버튼을 바꿔서 쓰기도 한다. |
UserName |
string SR |
사용자 이름을 조사한다. |
VirtualScreen |
Rectangle SR |
가상 화면 크기를 조사한다. 다중 모니터 전체를 포함한 화면 크기이다. |
WorkingArea |
Rectangle SR |
워크 에리어의 크기를 조사한다. 워크 에리어란 바탕화면에서 작업 표시줄을 뺀 영역을 의미한다. |
Win32에서 GetSystemMetrics나 SystemParametersInfo 같은 함수로 구하던 정보들이 하나의 클래스에 캡슐화되었다. 다음 예제는 주요 시스템 정보들을 조사하여 리스트 박스로 출력한다.
예 제 : SysInfo |
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SysInfo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add("BootMode : " + (SystemInformation.BootMode ==
BootMode.Normal ? "정상부팅" : "안전모드"));
listBox1.Items.Add("Border3DSize : " + SystemInformation.Border3DSize.ToString());
listBox1.Items.Add("CaptionHeight : " + SystemInformation.CaptionHeight);
listBox1.Items.Add("ComputerName : " + SystemInformation.ComputerName);
listBox1.Items.Add("DoubleClickSize : " + SystemInformation.DoubleClickSize.ToString());
listBox1.Items.Add("DoubleClickTime : " + SystemInformation.DoubleClickTime);
listBox1.Items.Add("DragFullWindows : " + SystemInformation.DragFullWindows);
listBox1.Items.Add("DragSize : " + SystemInformation.DragSize.ToString());
listBox1.Items.Add("IconSize : " + SystemInformation.IconSize.ToString());
listBox1.Items.Add("KeyboardDelay : " + SystemInformation.KeyboardDelay);
listBox1.Items.Add("KeyboardSpeed : " + SystemInformation.KeyboardSpeed);
listBox1.Items.Add("UserName : " + SystemInformation.UserName);
listBox1.Items.Add("WorkingArea : " + SystemInformation.WorkingArea.ToString());
}
}
}
test (0) | 2012.02.28 |
---|---|
신뢰사이트 등록하기 (0) | 2012.02.27 |
Monitor size 구하기 (0) | 2012.02.03 |
URL spy (0) | 2012.01.27 |
IE 실행 시키기 (0) | 2012.01.27 |