龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

用VB改变屏幕的分辨率和刷新频率

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
OptionExplicit PublicDeclareFunctionChangeDisplaySettingsLib"user32.dll"Alias"ChangeDisplaySettingsA" (ByReflpDevModeAsDEVMODE,ByValdwFlagsAsLong)AsLong PublicDeclareFunctionEnumDisplaySettingsLib"user32.dll"Alias"EnumDisplaySettingsA"(ByVa

  OptionExplicit

  PublicDeclareFunctionChangeDisplaySettingsLib"user32.dll"Alias"ChangeDisplaySettingsA"

  (ByReflpDevModeAsDEVMODE,ByValdwFlagsAsLong)AsLong
  PublicDeclareFunctionEnumDisplaySettingsLib"user32.dll"Alias"EnumDisplaySettingsA"(ByVal

  lpszDeviceNameAsString,ByValiModeNumAsLong,ByReflpDevModeAsDEVMODE)AsLong

  ConstDM_PELSHEIGHTAsLong=&H100000
  ConstDM_PELSWIDTHAsLong=&H80000
  ConstDM_BITSPERPELAsLong=&H40000
  ConstDM_DISPLAYFREQUENCYAsLong=&H400000

  ConstCCHDEVICENAMEAsLong=32
  ConstCCHFORMNAMEAsLong=32
  ConstCDS_TEST=&H4

  PrivateTypeDEVMODE
  dmDeviceNameAsString*CCHDEVICENAME
  dmSpecVersionAsInteger
  dmDriverVersionAsInteger
  dmSizeAsInteger
  dmDriverExtraAsInteger
  dmFieldsAsLong
  dmOrientationAsInteger
  dmPaperSizeAsInteger
  dmPaperLengthAsInteger
  dmPaperWidthAsInteger
  dmScaleAsInteger
  dmCopiesAsInteger
  dmDefaultSourceAsInteger
  dmPrintQualityAsInteger
  dmColorAsInteger
  dmDuplexAsInteger
  dmYResolutionAsInteger
  dmTTOptionAsInteger
  dmCollateAsInteger
  dmFormNameAsString*CCHFORMNAME
  dmUnusedPaddingAsInteger
  dmBitsPerPelAsInteger
  dmPelsWidthAsLong
  dmPelsHeightAsLong
  dmDisplayFlagsAsLong
  dmDisplayFrequencyAsLong
  EndType

  '-------------------------------------------------------------------------------------------
  'LngWidth//屏幕的宽(单位象素)
  'LngHeight//屏幕的高(单位象素)
  'IntColor//多少位颜色(e.g16or32)
  'LngFrequency//屏幕的刷新频率
  '
  '声明:
  '调用该函数时要确定所设置的值在系统所允许的设置范围内,比如系统的最大刷新频率位80,而你
  '用把LngFrequency设位85,这样将带来无法预测的后果。
  '------------------------------------------------------------------------------------------
  PublicFunctionSetDisplaymode(LngWidthAsLong,LngHeightAsLong,IntColorAsInteger,

  LngFrequencyAsLong)AsLong
  DimNewDevmodeAsDEVMODE
  DimlngPAsLong
  
  'obtainsinformation
  EnumDisplaySettings0&,0&,NewDevmode
  
  WithNewDevmode
  .dmFields=DM_PELSHEIGHTOrDM_PELSWIDTHOrDM_BITSPERPELOrDM_DISPLAYFREQUENCY
  .dmPelsWidth=LngWidth
  .dmPelsHeight=LngHeight
  .dmBitsPerPel=IntColor
  .dmDisplayFrequency=LngFrequency
  EndWith
  
  SetDisplaymode=ChangeDisplaySettings(NewDevmode,CDS_TEST)
  EndFunction

->

精彩图集

赞助商链接