由于工作需要,在win98上经常需要在256色和真彩色之间切换!而有些人在操作时,往往不留心会切换成过高分辨率,导致显示器不正常,所以为了安全方便,我需要找这样一款软件,能快速切换这2种工作环境的!谁帮我写一个,最好是运行一次,切换一下,什么也不用点,只给点提示就行了!谢谢VB版的朋友,帮我做一个吧,由于本人不会VB,只好摆脱你们了!

解决方案 »

  1.   

    求人不如求己!我自己解决了,上华军下载一个VB6精简版,然后在窗体拖上放2个按钮:清空所有代码,贴入以下代码:[code=VB6] Option Explicit
      Private Declare Function EnumDisplaySettings Lib "user32" Alias _
              "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _
              ByVal iModeNum As Long, lpDevMode As Any) As Long
        
      Private Declare Function ChangeDisplaySettings Lib "user32" Alias _
              "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
      Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _
                                          ByVal dwReserved As Long) As Long
        
      Const EWX_REBOOT = 2                           '注释:   重开机
      Const CCDEVICENAME = 32
      Const CCFORMNAME = 32
        
      Const DM_BITSPERPEL = &H40000
      Const DISP_CHANGE_SUCCESSFUL = 0
      Const DISP_CHANGE_RESTART = 1
      Const CDS_UPDATEREGISTRY = 1
      Private 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
      Private DevM     As DEVMODE
      Private Sub Command1_Click()
                Dim a     As Boolean
                Dim i     As Long
                Dim b     As Long
                Dim ans     As Long
                a = EnumDisplaySettings(0, 0, DevM)           '   注释:Initial   Setting
                DevM.dmBitsPerPel = 8       '注释:设定成256色
                DevM.dmFields = DM_BITSPERPEL
                b = ChangeDisplaySettings(DevM, 0)
                If b = DISP_CHANGE_RESTART Then
                      ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel)
                      If ans = 1 Then
                            b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
                            Call ExitWindowsEx(EWX_REBOOT, 0)
                      End If
                Else
                      If b <> DISP_CHANGE_SUCCESSFUL Then
                            Call MsgBox("设定有误", vbCritical)
                      End If
                End If
      End SubPrivate Sub Command2_Click()
                Dim a     As Boolean
                Dim i     As Long
                Dim b     As Long
                Dim ans     As Long
                a = EnumDisplaySettings(0, 0, DevM)           '   注释:Initial   Setting
                DevM.dmBitsPerPel = 32       '注释:设定成256色
                DevM.dmFields = DM_BITSPERPEL
                b = ChangeDisplaySettings(DevM, 0)
                If b = DISP_CHANGE_RESTART Then
                      ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel)
                      If ans = 1 Then
                            b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
                            Call ExitWindowsEx(EWX_REBOOT, 0)
                      End If
                Else
                      If b <> DISP_CHANGE_SUCCESSFUL Then
                            Call MsgBox("设定有误", vbCritical)
                      End If
                End If
    End Sub[/code]
      

  2.   

    晕死的!上一楼中,请去掉代码的开头和结尾:[code=VB6] 、[/code]Option Explicit 
      Private Declare Function EnumDisplaySettings Lib "user32" Alias _ 
              "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _ 
              ByVal iModeNum As Long, lpDevMode As Any) As Long 
         
      Private Declare Function ChangeDisplaySettings Lib "user32" Alias _ 
              "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long 
      Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _ 
                                          ByVal dwReserved As Long) As Long 
         
      Const EWX_REBOOT = 2                           '注释:   重开机 
      Const CCDEVICENAME = 32 
      Const CCFORMNAME = 32 
         
      Const DM_BITSPERPEL = &H40000 
      Const DISP_CHANGE_SUCCESSFUL = 0 
      Const DISP_CHANGE_RESTART = 1 
      Const CDS_UPDATEREGISTRY = 1 
      Private 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 
      Private DevM     As DEVMODE 
      Private Sub Command1_Click() 
                Dim a     As Boolean 
                Dim i     As Long 
                Dim b     As Long 
                Dim ans     As Long 
                a = EnumDisplaySettings(0, 0, DevM)           '   注释:Initial   Setting 
                DevM.dmBitsPerPel = 8       '注释:设定成256色 
                DevM.dmFields = DM_BITSPERPEL 
                b = ChangeDisplaySettings(DevM, 0) 
                If b = DISP_CHANGE_RESTART Then 
                      ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel) 
                      If ans = 1 Then 
                            b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) 
                            Call ExitWindowsEx(EWX_REBOOT, 0) 
                      End If 
                Else 
                      If b  <> DISP_CHANGE_SUCCESSFUL Then 
                            Call MsgBox("设定有误", vbCritical) 
                      End If 
                End If 
      End Sub Private Sub Command2_Click() 
                Dim a     As Boolean 
                Dim i     As Long 
                Dim b     As Long 
                Dim ans     As Long 
                a = EnumDisplaySettings(0, 0, DevM)           '   注释:Initial   Setting 
                DevM.dmBitsPerPel = 32       '注释:设定成256色 
                DevM.dmFields = DM_BITSPERPEL 
                b = ChangeDisplaySettings(DevM, 0) 
                If b = DISP_CHANGE_RESTART Then 
                      ans = MsgBox("要重开机设定才能完成,重开?", vbOKCancel) 
                      If ans = 1 Then 
                            b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY) 
                            Call ExitWindowsEx(EWX_REBOOT, 0) 
                      End If 
                Else 
                      If b  <> DISP_CHANGE_SUCCESSFUL Then 
                            Call MsgBox("设定有误", vbCritical) 
                      End If 
                End If 
    End Sub