Option ExplicitPrivate Declare Function EnumDisplaySettings _ Lib "user32" Alias "EnumDisplaySettingsA" ( _ ByVal lpszDeviceName As Long, _ ByVal iModeNum As Long, _ lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings _ Lib "user32" Alias "ChangeDisplaySettingsA" ( _ lpDevMode As Any, _ ByVal dwflags As Long) As LongPrivate Type DEVMODE dmDeviceName As String * 32 dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * 32 dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End TypeConst DM_BITSPERPEL = &H40000 Const DM_PELSWIDTH = &H80000 Const DM_PELSHEIGHT = &H100000 Const DM_DISPLAYFREQUENCY = &H400000 Private Sub ChangeRes(lngPelsWidth As Long, _ lngPelsHeight As Long, _ intBitsPerPel As Integer, _ lngDisplayFrequency As Long) Dim dm As DEVMODE
Call EnumDisplaySettings(0&, -1, dm)
dm.dmFields = DM_PELSWIDTH Or _ DM_PELSHEIGHT Or _ DM_BITSPERPEL Or _ DM_DISPLAYFREQUENCY dm.dmPelsWidth = lngPelsWidth dm.dmPelsHeight = lngPelsHeight dm.dmBitsPerPel = intBitsPerPel dm.dmDisplayFrequency = lngDisplayFrequency
Call ChangeDisplaySettings(dm, 1) End Sub Private Sub Command1_Click() Call ChangeRes(1024, 768, 32, 85) '75为刷新率 End Sub //得到刷新率 Private Declare Function EnumDisplaySettings Lib "user32" _ Alias "EnumDisplaySettingsA" _ (ByVal lpszDeviceName As Long, _ ByVal iModeNum As Long, _ lpDevMode As Any) As Boolean
Const CCDEVICENAME = 32 Const CCFORMNAME = 32 Const ENUM_CURRENT_SETTINGS = -1Private Type DEVMODE dmDeviceName As String * CCDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type Private Sub Command1_Click() Dim DevM As DEVMODE 'Get the info into DevM erg& = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevM) '输出屏幕刷新率值 Debug.Print DevM.dmDisplayFrequency End Sub
Option Explicit Private Declare Function EnumDisplaySettings Lib "user32" Alias _ "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _ ByVal iModeNum As Long, lpDevMode As Any) As BooleanPrivate Declare Function ChangeDisplaySettings Lib "user32" Alias _ "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As LongConst CCDEVICENAME = 32 Const CCFORMNAME = 32 Const DM_BITSPERPEL = &H40000 Const DM_PELSWIDTH = &H80000 Const DM_PELSHEIGHT = &H100000Private Type DEVMODE dmDeviceName As String * CCDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCFORMNAME dmUnusedPadding As Integer dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End TypeDim DevM As DEVMODE Dim nCurScreenW, nCurScreenH As IntegerPrivate Sub Command1_Click() Dim RetVal DevM.dmPelsWidth = 800 '宽 DevM.dmPelsHeight = 600 '高 DevM.dmDisplayFrequency = 70 '刷新率 ChangeDisplaySettings DevM, 0 End SubPrivate Sub Command2_Click() DevM.dmFields = DM_PELSWIDTH + DM_PELSHEIGHT DevM.dmPelsWidth = nCurScreenW DevM.dmPelsHeight = nCurScreenH ChangeDisplaySettings DevM, 0 Unload Me End SubPrivate Sub Form_Load() Dim b As Boolean, i& b = EnumDisplaySettings(0&, i&, DevM) nCurScreenW = Screen.Width / Screen.TwipsPerPixelX nCurScreenH = Screen.Height / Screen.TwipsPerPixelY End Sub
Lib "user32" Alias "EnumDisplaySettingsA" ( _
ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings _
Lib "user32" Alias "ChangeDisplaySettingsA" ( _
lpDevMode As Any, _
ByVal dwflags As Long) As LongPrivate Type DEVMODE
dmDeviceName As String * 32
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End TypeConst DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const DM_DISPLAYFREQUENCY = &H400000
Private Sub ChangeRes(lngPelsWidth As Long, _
lngPelsHeight As Long, _
intBitsPerPel As Integer, _
lngDisplayFrequency As Long)
Dim dm As DEVMODE
Call EnumDisplaySettings(0&, -1, dm)
dm.dmFields = DM_PELSWIDTH Or _
DM_PELSHEIGHT Or _
DM_BITSPERPEL Or _
DM_DISPLAYFREQUENCY
dm.dmPelsWidth = lngPelsWidth
dm.dmPelsHeight = lngPelsHeight
dm.dmBitsPerPel = intBitsPerPel
dm.dmDisplayFrequency = lngDisplayFrequency
Call ChangeDisplaySettings(dm, 1)
End Sub
Private Sub Command1_Click()
Call ChangeRes(1024, 768, 32, 85) '75为刷新率
End Sub
//得到刷新率
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, _
lpDevMode As Any) As Boolean
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Const ENUM_CURRENT_SETTINGS = -1Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub Command1_Click()
Dim DevM As DEVMODE
'Get the info into DevM
erg& = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevM)
'输出屏幕刷新率值
Debug.Print DevM.dmDisplayFrequency
End Sub
Private Declare Function EnumDisplaySettings Lib "user32" Alias _
"EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
ByVal iModeNum As Long, lpDevMode As Any) As BooleanPrivate Declare Function ChangeDisplaySettings Lib "user32" Alias _
"ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As LongConst CCDEVICENAME = 32
Const CCFORMNAME = 32
Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End TypeDim DevM As DEVMODE
Dim nCurScreenW, nCurScreenH As IntegerPrivate Sub Command1_Click()
Dim RetVal
DevM.dmPelsWidth = 800 '宽
DevM.dmPelsHeight = 600 '高
DevM.dmDisplayFrequency = 70 '刷新率
ChangeDisplaySettings DevM, 0
End SubPrivate Sub Command2_Click()
DevM.dmFields = DM_PELSWIDTH + DM_PELSHEIGHT
DevM.dmPelsWidth = nCurScreenW
DevM.dmPelsHeight = nCurScreenH
ChangeDisplaySettings DevM, 0
Unload Me
End SubPrivate Sub Form_Load()
Dim b As Boolean, i&
b = EnumDisplaySettings(0&, i&, DevM)
nCurScreenW = Screen.Width / Screen.TwipsPerPixelX
nCurScreenH = Screen.Height / Screen.TwipsPerPixelY
End Sub