大家好,VB不知道用什么代码来更改显示器的分辨率?请高手指教,谢谢!

解决方案 »

  1.   

    搜索: vb6 改变显示器分辨率 API
      

  2.   

    http://download.csdn.net/source/3435467
      

  3.   


    Attribute VB_Name = "设置屏幕分辨率"
    '启动软件调整为我需要的分辨率及色板: Call ScreenBat(1024, 768, 16, "1024")
    '关闭软件恢复原先分辨率: Call ScreenBat(1024, 768, 16, "old")Public Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
    Public Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As LongPublic oldWidth As Long, oldHigh As Long, oldPerpel As LongPrivate Const CCDEVICENAME = 32
    Private Const CCFORMNAME = 32
    Private Const DM_BITSPERPEL = &H40000
    Private Const DM_PELSWIDTH = &H80000
    Private Const DM_PELSHEIGHT = &H100000
    Private Const CDS_UPDATEREGISTRY = &H1
    Private Const CDS_TEST = &H4
    Private Const DISP_CHANGE_SUCCESSFUL = 0
    Private Const DISP_CHANGE_RESTART = 1Private Const ENUM_REGISTRY_SETTINGS = (-2)
    Private Const ENUM_CURRENT_SETTINGS = (-1)'刷新频率常量
    Private Const DM_DISPLAYFREQUENCY = &H400000Private 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 TypePrivate DevM As DEVMODE
    Private DevCurrent As DEVMODE
    Private ret As LongPublic Sub ScreenBat(ByVal newWidth As Long, ByVal newHeight As Long, ByVal newPerpel As Long, ByVal Scren As String)
        If Scren = "1024" Then
            ret = EnumDisplaySettings(0&, ENUM_REGISTRY_SETTINGS, DevM)
            'ret = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, DevCurrent)
            oldWidth = DevM.dmPelsWidth: oldHigh = DevM.dmPelsHeight: oldPerpel = DevM.dmBitsPerPel
            'DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT 'Or DM_BITSPERPEL
            If DevM.dmPelsWidth <> newWidth Then DevM.dmPelsWidth = newWidth: Scren = "T"   '想要设定的屏幕宽度
            If DevM.dmPelsHeight <> newHeight Then DevM.dmPelsHeight = newHeight: Scren = "T" '想要设定的屏幕高度
            If DevM.dmBitsPerPel <> newPerpel Then DevM.dmBitsPerPel = newPerpel: Scren = "T"  ' (could be 8, 16, 32 or even 4) '此行可用于改变色板
            If Scren = "T" Then Call ChangeDisplaySettings(DevM, CDS_TEST)
        ElseIf Scren = "old" Then
            If DevM.dmPelsWidth <> oldWidth Then DevM.dmPelsWidth = oldWidth: Scren = "T"    '恢复屏幕宽度
            If DevM.dmPelsHeight <> oldHigh Then DevM.dmPelsHeight = oldHigh: Scren = "T"  '恢复屏幕高度
            If DevM.dmBitsPerPel <> oldPerpel Then DevM.dmBitsPerPel = oldPerpel: Scren = "T"  ' (could be 8, 16, 32 or even 4) '恢复色板
            If Scren = "T" Then Call ChangeDisplaySettings(DevM, CDS_TEST)    End If
    End Sub
      

  4.   

    真巧
    俺十分钟以前刚刚baidu了一下这个问题
    五星大牛龙卷风的方案类似的代码