搜索
熱搜: 活動 交友 discuz
查看: 1780|回復: 0
打印 上一主題 下一主題

[教學] 變更螢幕解析度範例 (.net)

[複製鏈接]
跳轉到指定樓層
1#
發表於 2007-7-27 20:49:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
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
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。


Page Rank Check

廣告刊登  |   交換連結  |   贊助我們  |   服務條款  |   免責聲明  |   客服中心  |   中央分站

手機版|中央論壇

GMT+8, 2024-4-29 00:09 , Processed in 0.016494 second(s), 16 queries .

Powered by Discuz!

© 2005-2015 Copyrights. Set by YIDAS

快速回復 返回頂部 返回列表