728x90
반응형
728x170
▶ ScreenHelper.cs
using System;
using System.Runtime.InteropServices;
namespace TestProject
{
public static class ScreenHelper
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Structure
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 사각형 - RECTANGLE
/// <summary>
/// 사각형
/// </summary>
[StructLayout(LayoutKind.Sequential)]
private struct RECTANGLE
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Public
#region Field
/// <summary>
/// 왼쪽
/// </summary>
public int Left;
/// <summary>
/// 위쪽
/// </summary>
public int Top;
/// <summary>
/// 오른쪽
/// </summary>
public int Right;
/// <summary>
/// 아래쪽
/// </summary>
public int Bottom;
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Delegate
////////////////////////////////////////////////////////////////////////////////////////// Private
#region 모니터 열거 프로시저 - MonitorEnumProc(desktopHandle, deviceContextHandle, rectangle, data)
/// <summary>
/// 모니터 열거 프로시저
/// </summary>
/// <param name="desktopHandle">데스크톱 핸들</param>
/// <param name="deviceContextHandle">디바이스 컨텍스트 핸들</param>
/// <param name="rectangle">사각형</param>
/// <param name="data">데이터</param>
private delegate void MonitorEnumProc
(
IntPtr desktopHandle,
IntPtr deviceContextHandle,
ref RECTANGLE rectangle,
int data
);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Import
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 디스플레이 모니터 열거하기 - EnumDisplayMonitors(deviceContextHandle, rectangleHandle, callback, data)
/// <summary>
/// 디스플레이 모니터 열거하기
/// </summary>
/// <param name="deviceContextHandle">디바이스 컨텍스트 핸들</param>
/// <param name="rectangleHandle">사각형 핸들</param>
/// <param name="callback">콜백</param>
/// <param name="data">데이터</param>
/// <returns>처리 결과</returns>
[DllImport("user32.dll")]
private static extern bool EnumDisplayMonitors
(
IntPtr deviceContextHandle,
IntPtr rectangleHandle,
MonitorEnumProc callback,
int data
);
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Public
#region 모니터 카운트 구하기 - GetMonitorCount()
/// <summary>
/// 모니터 카운트 구하기
/// </summary>
/// <returns>모니터 카운트</returns>
public static int GetMonitorCount()
{
int monitorCount = 0;
MonitorEnumProc callback = (IntPtr desktopHandle, IntPtr deviceContextHandle, ref RECTANGLE rectangle, int data) => ++monitorCount;
if(EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, callback, 0))
{
return monitorCount;
}
else
{
return -1;
}
}
#endregion
}
}
728x90
▶ Program.cs
using System;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
int monitorCount = ScreenHelper.GetMonitorCount();
Console.WriteLine($"모니터 수 : {monitorCount}");
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] Process 클래스 : PowerShell 스크립트 실행하기 (0) | 2021.02.22 |
---|---|
[C#/COMMON] Runspace 클래스 : PowerShell 스크립트 실행하기 (0) | 2021.02.22 |
[C#/COMMON] 극 좌표(Polar Coordinates) 사용하기 (0) | 2021.02.14 |
[C#/COMMON] 3자 컴포넌트 어셈블리 서명하기 (0) | 2021.02.08 |
[C#/COMMON] 반복자(Iterator)를 사용해 텍스트 파일 반대로 읽기 (0) | 2021.02.08 |
[C#/COMMON] Enum 클래스 : GetValues 정적 메소드를 사용해 열거형 값 배열 구하기 (0) | 2021.02.07 |
[C#/COMMON] WeakReference 클래스 : 약한 참조 사용하기 (0) | 2021.02.07 |
[C#/COMMON] 모니터 정보 구하기 (0) | 2021.02.06 |
[C#/COMMON] 모니터 정보 구하기 (0) | 2021.02.06 |
[C#/COMMON] Version 클래스 : 버전 비교하기 (0) | 2021.02.04 |
댓글을 달아 주세요