使用SystemParametersInfo访问用户界面设置

2022-06-23 15:20:02   阅读:118 次  点赞:35 次  鄙视:1 次  收藏:0 次  由 campingchina.cc 收集整理
分享到:
关闭
听新闻 - 使用SystemParametersInfo访问用户界面设置
00:00 / 00:00

-

+

语速: 慢速 默认 快速
- 6 +
自动播放×

御姐音

大叔音

萝莉音

型男音

温馨提示:
是否自动播放到下一条内容?
立即播放当前内容?
确定
确定
取消

原标题:使用SystemParametersInfo访问用户界面设置

SystemParametersInfo这个函数还挺有用,它可以用来以代码的方式访问操作系统中的用户界面设置,并且它是唯一一个可以用来修改设置的函数。在今天的文章中,我不会列出该函数支持的所有设置参数,如有需要,请直接出门左转看文档,那里才是你需要去的地方。我只是想说几条比较值得注意的:

> SPI_GETICONTITLELOGFONT

此参数可以用来获取图标文本的字体信息。对应的,SPI_SETICONTITLELOGFONT可以用来进行修改。

> SPI_GETNONCLIENTMETRICS

此参数可以用来获取窗口标题,菜单,状态栏以及消息提示框的字体信息,对应的,SPI_SETNONCLIENTMETRICS可以用来进行修改。

下面是一些控制面板上对应的参数:

> SPI_SETKEYBOARDDELAY 和 SPI_SETKEYBOARDSPEED 可以用来设置键盘自动重复相关的参数。

> SPI_SETDOUBLECLICKTIME 可以用来设置鼠标双击的速度。

> SPI_SETMENUFADE 可以用来启用或禁用菜单淡出动画。

> 另外还有一个SPI_SETxxxANIMATION系列参数,可以用来控制哪些屏幕组件可以进行动画。

请注意,当使用SPI_SET*参数时,你还需要指明待设置的值是临时的(注销后设置失效)还是永久性的。SPIF_UPDATEINIFILE这个标志指定设置将会保存到用户配置文件中。如果关闭这个标志,则设置不会保存,并且会在用户注销的时候失效。另外,你还需要添加SPIF_SENDCHANGE标志,这样那些希望接收设置变化事件的程序可以收到这个通知并作出对应的动作。

因为系统设置的变更可以是临时的,也可以是永久性的,这就会造成一个潜在的问题:那些直接访问注册表以读取或写入系统设置的程序可能不会如预期那样工作。如果当前设置是临时性的,那么这些设置值将不会保存到注册表中。SystemParametersInfo这个函数会获取当前实际的设置值,也包含了那些只是驻留在内存中的临时设置值。

举个例子,如果你想查询当前菜单是否启用了动画,如果用户已经临时性地禁止了动画,如果你通过读取注册表来判断的话,则你读取到的值可能和当前值不一样。另外,那些写入到注册表的设置更改,只会在用户下一次登录的时候才会生效,因为这个时候新的设置值才会被重新加载。

如果你希望设置立即生效,可以使用SystemParametersInfo这个函数。我仍然感到困惑的是,为什么人们去使用未文档化的注册表项来更改这些设置,而不是使用系统API来实现。特别是当API能正常工作,而未文档化注册表项不那么靠谱时。

我还记得,曾经有一个应用程序,它没有系统提供的API,而是直接访问未文档化的注册表键(应该是想获取图标文本字体吧我记得)。但是意外的是,它读取的注册表在Windows 2000里发生了变化(该程序面向Windows 95平台)。如果这个开发者使用了标准化的API来实现的话,则程序不需要经过任何改动就可以在新版本系统中运行。

展开全文

换句话说,开发者尝试绕开最为合适的技术路线,使用了自己觉得一定能成功的方法。但是最终还是搬起石头砸了自己的脚。

总结

如果你希望的程序存活的时间长一些,则请尽量使用标准化的,文档化的API。

TopomelBox不追求奇淫技巧,而是按部就班的按照文档来,甚至有时候我还会看看API是否标记为Obsolete。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《Using SystemParametersInfo to access user interface settings》

Tags标签
加入收藏夹(0 点赞一下(35 鄙视一下(1
发表评论
内容:
剩余字数:360/360


     :: 正在为您加载评论……


每页10条,共0

相关文章

play
next
close
X

Copyright © 2021-2022 精致露营网Jingzhiluying.com -中国精致露营资源整合分享平台 商务合作联系153-5599-0481(同微信)
露营,精致露营,露营网,露营中国,露营中国网,精致露营网,去露营,露营之家,露营旅游,glamping,户外露营,露营网站,户外网站,露营资讯,房车,露营论坛,户外露营展,luying,jingzhiluying,campingchina,户外,户外装备,露营装备,精致露营装备,精致露营攻略,精致露营地,露营地,精致露营信息,露营必备,露营物品,精致露营火了,露营图片,露营的精美图片,露营背景图片,露营壁纸,夜晚的帐篷图片,露营野餐图片,精致露营图片,户外露营的照片,露营基地效果图,精致露营文案,精致露营季,露营的朋友圈文案

京ICP备09102084号 XML地图 Tags标签 APP客户端下载

×

分享到微信朋友圈

扫描二维码在微信中分享
关闭
手机客户端
APP下载