VB中利用API函數(shù)實現(xiàn)屏幕顏色數(shù)設(shè)定

字號:

原則上,只改這一次,下一次開機(jī)會還原,但如果需重開機(jī),才會Update ReGIStry中的設(shè)定,并重開機(jī)。
    如果要永久設(shè)定其設(shè)定值,請將
    b = ChangeDisplaySettings(DevM, 0)
    改成
    b = ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)
    注:
    DevM.dmBitsPERPel 便是設(shè)定顏色數(shù),其實應(yīng)說每個Pixel要多少Bits來顯示
    4 --> 16色
    8 --> 256色
    16 --> 65536色 以此類推
    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 ’ 重開機(jī)
    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