|
Public Class Form1
Private Const CCDEVICENAME As Short = 32
Private Const CCFORMNAME As Short = 32
Private Const DM_PELSWIDTH As Integer = &H80000
Private Const DM_PELSHEIGHT As Integer = &H100000
'更新螢幕掃瞄頻率常數
Private Const DM_DISPLAYFREQUENCY As Integer = &H400000
'宣告要使用的 API 函式
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Integer, ByVal iModeNum As Integer, ByRef lpDevMode As DEVMODE) As Boolean
'宣告要使用的 API 函式
Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (ByRef lpDevMode As DEVMODE, ByVal dwflags As Integer) As Integer
'定義要使用的變數結構
Private Structure DEVMODE
<VBFixedString(CCDEVICENAME), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=CCDEVICENAME)> Public dmDeviceName As String
Dim dmSpecVersion As Short
Dim dmDriverVersion As Short
Dim dmSize As Short
Dim dmDriverExtra As Short
Dim dmFields As Integer
Dim dmOrientation As Short
Dim dmPaperSize As Short
Dim dmPaperLength As Short
Dim dmPaperWidth As Short
Dim dmScale As Short
Dim dmCopies As Short
Dim dmDefaultSource As Short
Dim dmPrintQuality As Short
Dim dmColor As Short
Dim dmDuplex As Short
Dim dmYResolution As Short
Dim dmTTOption As Short
Dim dmCollate As Short
<VBFixedString(CCFORMNAME), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=CCFORMNAME)> Public dmFormName As String
Dim dmUnusedPadding As Short
Dim dmBitsPerPel As Short
Dim dmPelsWidth As Integer
Dim dmPelsHeight As Integer
Dim dmDisplayFlags As Integer
Dim dmDisplayFrequency As Integer
End Structure
'改變螢幕解析度的函式
Private Sub ChangeDisp(ByRef iWidth As Single, ByRef iHeight As Single)
Dim blnWorked As Boolean
Dim DevM As DEVMODE
blnWorked = EnumDisplaySettings(0, 0, DevM)
With DevM
.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_DISPLAYFREQUENCY
.dmPelsWidth = iWidth
.dmPelsHeight = iHeight
'.dmDisplayFrequency = 75 '更新頻率定為 75
End With
Call ChangeDisplaySettings(DevM, 0)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "目前螢幕的解析度為:" & My.Computer.Screen.Bounds.Width & "x" & My.Computer.Screen.Bounds.Height
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ChangeDisp(1024, 768) '變更螢幕的解析度為 1024 x 768
Label1.Text = "目前螢幕的解析度為:" & My.Computer.Screen.Bounds.Width & "x" & My.Computer.Screen.Bounds.Height
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
ChangeDisp(800, 600) '變更螢幕的解析度為 800 x 600
Label1.Text = "目前螢幕的解析度為:" & My.Computer.Screen.Bounds.Width & "x" & My.Computer.Screen.Bounds.Height
End Sub
End Class |
|