VBA代码大全033:如何在excel中用vba获取屏幕分辨率?

屏幕分辨率是指屏幕显示的分辨率。

屏幕分辨率确定计算机屏幕上显示多少信息的设置,以水平和垂直像素来衡量,分辨率160×128的意思是水平方向含有像素数为160个,垂直方向像素数128个。

在屏幕尺寸一样的情况下,屏幕分辨率低时(例如 640 x 480),在屏幕上显示的像素少,但尺寸比较大。

屏幕分辨率高时(例如 1600 x 1200),在屏幕上显示的像素多,但尺寸比较小。

在vba中可以用api函数获取计算机系统的屏幕分辨率。

一、用api函数GetSystemMetrics获取屏幕分辨率。

GetSystemMetrics函数可以获取系统的各种配置信息和各种系统度量。

GetSystemMetrics函数返回的度量都是以像素为单位的。

它的语法如下

int WINAPI GetSystemMetrics(
  _In_ int nIndex
);

其中参数nIndex为要获取的对应信息。

参数nIndex为SM_CXSCREEN可以获得以像素表示的主显示器的屏幕宽度,为SM_CYSCREEN可以获得以像素表示的主显示器的屏幕高度。

利用这两个参数可以获得屏幕分辨率,代码如下:

Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Sub QQ1722187970()
    Dim x, y
    x = GetSystemMetrics(SM_CXSCREEN)
    y = GetSystemMetrics(SM_CYSCREEN)
    MsgBox "当前系统的屏幕分辨率为" & x & "X" & y
End Sub

二、用api函数GetDeviceCaps获取屏幕分辨率。

GetDeviceCaps函数可以获取指定设备的各种信息。

它的语法如下:

int GetDeviceCaps(
  HDC hdc,
  int index
);

其中参数hdc为要获取的设备DC的句柄,index参数为要获取的设备的信息。

当参数hdc为0,index参数为HORZRES时,返回的是以像素表示的屏幕显示器的宽度。

为VERTRES时,返回的是以像素表示的屏幕显示器的高度。

基于以上的知识可以通过如下的代码获取屏幕的分辨率:

Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Declare Function GetDeviceCaps Lib "Gdi32" (ByVal hDC As Long, ByVal index As Long) As Long
Const HORZRES = 8
Const VERTRES = 10
Sub QQ1722187970()
    Dim hDC As Long
    hDC = GetDC(0)
    Dim X, Y
    X = GetDeviceCaps(hDC, HORZRES)
    Y = GetDeviceCaps(hDC, VERTRES)
    MsgBox "当前系统的屏幕分辨率为" & X & "X" & Y
    ReleaseDC 0, hDC
End Sub

 

       

仅有1条评论 发表评论

  1. 匿名 /

    大写的牛,

发表评论