在VB中调用API函数动态改变及恢复屏幕设置
2018-06-17 17:12:26来源:未知 阅读 ()
----理想的作法是:在软件开始时,动态的改变屏幕设置来达到软件运行的要求。在软件运行结束后,再自动把屏幕设置改回原来的设置值。这一切过程都在不知不觉中完成。这一做法可以通过在VB中调用API(应用程序接口)函数做到。实现方法如下:
----一、打开一个标准的EXE工程。
----二、在“工程”菜单栏下,选取“添加模块”,为工程添加一个模块。
----并在模块中添加如下代码:
‘---------------以下代码用于得到屏幕的设置参数--------------
DeclareFunctionGetDeviceCapsLib
"gdi32"(ByValhdcAsLong,
ByValnIndexAsLong)AsLong
‘取指定设备信息API函数
PublicConstHORZRES=8
‘三个屏幕常量
PublicConstVHORZRES=10
PublicConstBITSPIXEL=12
‘---------------通过字符COPY进行数据类型转换--------------
PrivateDeclareFunctionlstrcpyLib"kernel32"
Alias"lstrcpyA"(lpString1AsAny,lpString2AsAny)AsLong
‘------------------以下结构用于屏幕的初始化-----------------
ConstCCHDEVICENAME=32
ConstCCHFORMNAME=32
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
‘------------------设置屏幕的核心API-----------------
PrivateDeclareFunctionChangeDisplaySettings
Lib"User32"Alias"ChangeDisplaySettingsA"
(ByVallpDevModeAsLong,ByValdwflagsAsLong)AsLong
‘------------------设置屏幕的函数-----------------
PublicFunctionSetDispMode(WidthAsInteger,
HeightAsInteger,ColorAsInteger)AsLong
(SetDispMode是自己构造的更改屏幕设置的函数来,
它的三个参数Width、Height和Color分别是屏幕的横向分辨率、
纵向分辨率,颜色位数,其值可为24,16,0等。0为原有颜色设置。)
ConstDM_PELSWIDTH=&H80000
ConstDM_PELSHEIGHT=&H100000
ConstDM_BITSPERPEL=&H40000
DimNewDevModeAsDEVMODE
DimpDevmodeAsLong
WithNewDevMode
.dmSize=122
IfColor=0Then
‘如果Color=0则只改变屏幕的分辨率,而不改变色彩。
.dmFields=DM_PELSWIDTHOrDM_PELSHEIGHT
Else
‘如果Color不等0则改变屏幕的分辨率和色彩。
.dmFields=DM_PELSWIDTHOrDM_PELSHEIGHTOrDM_BITSPERPEL
EndIf
.dmPelsWidth=Width
.dmPelsHeight=Height
IfColor<>0Then
.dmBitsPerPel=Color
EndIf
EndWith
pDevmode=lstrcpy(NewDevMode,NewDevMode)
‘得到一个指向NewDevMode结构的Long型的指针。
ChangeDisplaySettingspDevmode,0
EndFunction
----三、在工程窗体中,加入两个按钮Command1和Command2,其Caption属性分别为“800x600x16”和“恢复原设置”。
----其程序代码为:
‘窗口的“通用|声明”区
OptionExplicit
DimH,V,ColorAsLong
'声名变量,用于保存最初屏幕设置
PrivateSubForm_Load()
‘---------------以下代码用于得到最初的屏幕设备--------------
H=GetDeviceCaps(Form1.hdc,HORZRES)
V=GetDeviceCaps(Form1.hdc,VHORZRES)
Color=GetDeviceCaps(Form1.hdc,BITSPIXEL)
EndSub
PrivateSubCommand1_Click()
‘调用SetDispMode函数改变屏幕设置
SetDispMode800,600,16
EndSub
PrivateSubCommand2_Click()
‘恢复最初屏幕设置
SetDispModeCint(H),Cint(V),Cint(Color)
EndSub
----四、将程序编译执行。
----本程序执行后,如果单击Command1,则您的计算机屏幕显示模式将被设置为“800x600x16”的显示模式;如果单击Command2,则您的计算机屏幕显示模式将被设置为原来的显示模式。此程序稍加修改,即可放置于桌面或任务栏中,直接快捷的修改屏幕设置。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:VB从零开始编外挂(一)
- 人民币金额转换例程 2018-06-17
- 用API函数Mcisendstring直接播放背景音乐 2018-06-17
- 利用API创建文件目录 2018-06-17
- 怎样在VB中声明和使用API函数 2018-06-17
- VB利用高级音频函数编写多媒体播放器 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash