博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

枚举当前所有的显示器信息

Posted on 2009-08-03 09:32  随风飘零0  阅读(232)  评论(0编辑  收藏  举报

Option Explicit

Private Declare Function EnumDisplayMonitors Lib "user32.dll" (ByVal hdc As Long, ByVal lprcClip As Long, ByVal lpfnEnum As Long, ByVal dwData As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Type RECTANGLE
    LeftTopX    As Long
    LeftTopY    As Long
    RightDownX  As Long
    RightDownY  As Long
End Type

Public Function FillMonitorInfo() As Integer
    Call EnumDisplayMonitors(ByVal 0&, ByVal 0&, AddressOf EnumMonitor, ByVal 0&)
End Function
Public Function EnumMonitor(ByVal hMoinitor As Long, ByVal hdcMonitor As Long, lprcMonitor As Long, ByVal dwData As Long) As Long
    Dim rcS As RECTANGLE
    CopyMemory rcS, lprcMonitor, Len(rcS)
    Debug.Print rcS.LeftTopX; rcS.LeftTopY; rcS.RightDownX - rcS.LeftTopX; rcS.RightDownY - rcS.LeftTopY; rcS.RightDownX; rcS.RightDownY
    EnumMonitor = 1
End Function