首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

修改屏幕的分辨率时,遇到有关问题

2012-03-13 
修改屏幕的分辨率时,遇到问题我在程序中修改屏幕的分辨率等信息,在网上查询到例程,如下:但是,一执行到Enum

修改屏幕的分辨率时,遇到问题
我在程序中修改屏幕的分辨率等信息,在网上查询到例程,如下:
但是,一执行到EnumDisplaySettings   时,就报错:未将对象引用设置到对象的实例,请高手指教,这是怎么回事?
系统:XP,笔记本,.net   2003   vb.net

        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
                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
                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)
                Try
                        Dim   blnWorked   As   Boolean
                        Dim   i   As   Integer
                        Dim   DevM   As   New   Form3.DEVMODE
                        DevM.dmDeviceName   =   " "
                        DevM.dmFormName   =   " "
                        i   =   0
                        Do
                                blnWorked   =   EnumDisplaySettings(0,   i,   DevM)
                                i   =   i   +   1
                        Loop   Until   (blnWorked   =   False)
                        With   DevM
                                .dmFields   =   DM_PELSWIDTH   Or   DM_PELSHEIGHT   Or   DM_DISPLAYFREQUENCY
                                .dmPelsWidth   =   iWidth
                                .dmPelsHeight   =   iHeight
                                '刷新频率为85
                                .dmDisplayFrequency   =   85
                        End   With
                        Call   ChangeDisplaySettings(DevM,   0)
                Catch   ex   As   Exception
                        MsgBox(ex.Message)


                End   Try
        End   Sub
        Private   Sub   btnGetDisp_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnGetDISP.Click
                Dim   X   As   Short   =   System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
                Dim   Y   As   Short   =   System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
                MsgBox( "您的显示器分辨率是 "   &   X   &   "   X   "   &   Y)
        End   Sub
        Private   Sub   btnSetDisp_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   btnSetDISP.Click
                If   MsgBox( "您确认要将显示器分辨率改为1024x768吗? ",   MsgBoxStyle.OKCancel,   "系统消息 ")   =   MsgBoxResult.OK   Then
                        '调用改变分辩率过程
                        ChangeDisp(1024,   768)
                End   If
        End   Sub


[解决办法]
o

热点排行