[모니터 해상도 바꾸기](퍼온글)
▣시스템 해상도 바꾸는 방법으로 사용될 API는
EnumDisplaySettings,ChangeDisplaySettings입니다.
1.폼에 command버튼과 option컨트롤을 놓고(컨트롤 배열 1~3) 테스트 합니다.
option1(1)의 caption => 640 * 480
option1(2)의 caption => 800 * 600
option1(3)의 caption => 1024 * 768
2.공통모듈
Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _
(ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _
(lpDevMode As Any, ByVal dwFlags As Long) As Long
Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_BITSPERPEL = &H40000
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000
Public Const CDS_UPDATEREGISTRY = &H1
Public Const CDS_TEST = &H4
Public Const DISP_CHANGE_SUCCESSFUL = 0
Public Const DISP_CHANGE_RESTART = 1
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
3.폼모듈
Dim gIndex As Integer '일반선언부
'*------------------------------------------------------------------*
Private Sub Command1_Click()
If gIndex = 0 Then
MsgBox "해상도 선택..", vbOKOnly, "Change"
Exit Sub
End If
Call sChange_Resolution(gIndex)
End Sub
'*------------------------------------------------------------------*
Sub sChange_Resolution(index As Integer)
Dim DevM As DEVMODE
erg& = EnumDisplaySettings(0&, 0&, DevM)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 'Or DM_BITSPERPEL
Select Case index
Case 1
DevM.dmPelsWidth = 640 'ScreenWidth
DevM.dmPelsHeight = 480 'ScreenHeight
Case 2
DevM.dmPelsWidth = 800 'ScreenWidth
DevM.dmPelsHeight = 600 'ScreenHeight
Case 3
DevM.dmPelsWidth = 1024 'ScreenWidth
DevM.dmPelsHeight = 768 'ScreenHeight
Case Else
End Select
erg& = ChangeDisplaySettings(DevM, CDS_TEST)
End Sub
'*------------------------------------------------------------------*
Private Sub Option1_Click(index As Integer)
gIndex = index
End Sub