我使用以下代码:
Private Sub Form_Load()
ResWidth = Screen.Width \ Screen.TwipsPerPixelX
ResHeight = Screen.Height \ Screen.TwipsPerPixelY
ScreenRes = ResWidth & "x" & ResHeight
MsgBox (ScreenRes)
End Sub
我用谷歌搜索过其他几个类似的代码。问题是,我总是得到一个消息框说我的分辨率是1200x1200,虽然我的实际分辨率是1920x1200。为什么我的成绩不好?
答案 0 :(得分:4)
不确定为什么不起作用,但您可以使用Windows API。
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
然后当您需要屏幕宽度和高度时,请定义以下常量:
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
然后,您可以在任何需要的地方使用GetSystemMetrics
。如果将声明和常量添加到模块(.BAS)更有意义,那么只需将声明和常量公开。
Dim width as Long, height as Long
width = GetSystemMetrics(SM_CXSCREEN)
height = GetSystemMetrics(SM_CYSCREEN)
答案 1 :(得分:2)
VB6中的Screen对象似乎存在问题。根据KB253940 PRB: Incorrect Screen Object Width/Height After the Desktop Is Resized:
在Visual Basic IDE中,Screen对象在更改屏幕分辨率后报告桌面宽度的值不正确。当应用程序在IDE外部执行时,如果从系统托盘中的“显示属性”图标更改了分辨率,则屏幕对象的“宽度”和“高度”属性将返回不正确的值。
KB建议使用GetDeviceCaps API函数来解决此问题:
Private Declare Function GetDeviceCaps Lib "gdi32" _
(ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Const HORZRES = 8
Private Const VERTRES = 10
Private Sub Form_Load()
ResWidth = GetDeviceCaps(Form1.hdc, HORZRES)
ResHeight = GetDeviceCaps(Form1.hdc, VERTRES)
ScreenRes = ResWidth & "x" & ResHeight
MsgBox (ScreenRes)
End Sub
答案 2 :(得分:0)
如果您正在使用任何Windows Mobile,那么方式会有所不同。您需要使用下一个方法:
Export-Csv
在上一个示例中,将屏幕宽度的32%分配给Width = (Screen.PrimaryScreen.WorkingArea.Width * 0.32)
变量。