상세 컨텐츠

본문 제목

System Information

C#

by 탑~! 2012. 2. 15. 00:13

본문

SystemInformation

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());

}

}

}




출처 : http://www.winapi.co.kr/dotnet/book/16-3-4.htm

'C#' 카테고리의 다른 글

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

관련글 더보기