WM_SETTINGCHANGE是个Windows的常用消息,当程序修改了SystemParametersInfo设置,则Windows就会广播此消息。但WM_SETTINGCHANGE也比较多地用在其它情形。
一般情况下,wParam/uFlags时0,lParam/pszSection是WIN.INI段名或被修改部分的注册表键(只是最终的键,而不是整个串)。事实上,WM_SETTINGCHANGE常被叫做WM_WININICHANGE,这两个符号在#define中的值也一样!当IActiveDesktop广播设置修改时,它将“ShellState”作为段名来传递,因为活动桌面设置被存储在一个注册表键中:
\HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellState
另外,如果你要广播自己修改的全程设置,也可以使用WM_SETTINGCHANGE。广播是应该使用SendMessageTimeout(HWND_BROADCAST, ...)函数
刷新系统环境变量
有时候在系统中添加了一个环境变量,却没有立即生效,又不想重启机器,可以采用如下API手动刷新环境变量:
|
|
WM_SETTINGCHANGE是Windows系统在参数设置更改时广播的消息。它不仅用于SystemParametersInfo的更新,也常见于其他场景。该消息的wParam通常为0,lParam包含段名或修改的注册表键。WM_SETTINGCHANGE有时被称为WM_WININICHANGE,两者在#define中等价。当IActiveDesktop广播设置变更时,会传递'ShellState'作为段名,关联于注册表键。若需广播自定义设置变更,同样可使用WM_SETTINGCHANGE。若需使新添加的环境变量立即生效,可调用相关API进行刷新。

497

被折叠的 条评论
为什么被折叠?



