EnumDisplayDevices는 디스플레이 장치에 대한 정보를 얻습니다.

지정한 디스플레이 장치 인덱스 번호에 해당하는 디스플레이 장치의 정보를 얻는다
● 선언
Function EnumDisplayDevices Lib "user32" Alias "EnumDisplayDevicesA" (Unused As Any, ByVal iDevNum As Long, lpDisplayDevice As DISPLAY_DEVICE, ByVal dwFlags As Long) As Boolean

● 인수

Unused ━ 디바이스 명, Null이면 iDevNum에 해당하는 디바이스 정보를 얻는다
iDevNum ━ 디스플레이 디바이스의 인덱스 번호, 디스플레이 디바이스 인덱스 번호는 0번 부터 시작하여 1씩 증가하여 부여된다
lpDisplayDevice ━ 디스플레이 디바이스 정보가 담길 구조체
dwFlags

● 반환

성공 ━ 0이 아닌 값
실패 ━ 0, iDevNum이 디스플레이 디바이스

소스의 실행 이미지 입니다.


소스입니다.
Option Explicit

Private Declare Function EnumDisplayDevices Lib "user32" Alias "EnumDisplayDevicesA" (Unused As Any, ByVal iDevNum As Long, lpDisplayDevice As DISPLAY_DEVICE, ByVal dwFlags As Long) As Boolean
Private Type DISPLAY_DEVICE
    cb           As Long
    DeviceName   As String * 32
    DeviceString As String * 128
    StateFlags   As Long
    DeviceID     As String * 128
    DeviceKey    As String * 128
End Type
Private Const DISPLAY_DEVICE_ACTIVE As Long = &H1
Private Const DISPLAY_DEVICE_PRIMARY_DEVICE As Long = &H4

Private Sub Form_Load()
    Dim Info As DISPLAY_DEVICE ' 다바이스 정보 구조체
    Dim DNum As Long ' 디바이스 인덱스 번호
    Dim Ret As Long ' 반환값
   
    Me.AutoRedraw = True
    Ret = -1
    Info.cb = Len(Info)
    While Not Ret = 0
        If Not Ret = -1 Then
            Me.Print "디스플레이 장치 번호:" & DNum
            Me.Print "디스플레이 아답터명:" & GetVBStringFromAPIString(Info.DeviceString)
            Me.Print "디스플레이 ID:" & GetVBStringFromAPIString(Info.DeviceName)
            Me.Print "현재 활성중인 디스플레이:" & IIf((Info.StateFlags And DISPLAY_DEVICE_ACTIVE) = DISPLAY_DEVICE_ACTIVE, True, False)
            Me.Print "첫번째 디스플레이 장치:" & IIf((Info.StateFlags And DISPLAY_DEVICE_PRIMARY_DEVICE) = DISPLAY_DEVICE_PRIMARY_DEVICE, True, False)
            DNum = DNum + 1
        End If
        Info.cb = Len(Info)
        Ret = EnumDisplayDevices(ByVal 0&, DNum, Info, ByVal 0&)
    Wend
End Sub

Private Function GetVBStringFromAPIString(ByVal Str As String) As String
    GetVBStringFromAPIString = Left$(Str, InStr(1, Str, vbNullChar) - 1)
End Function

+ Recent posts