WM_SETTINGCHANGE

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手动刷新环境变量:

//SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,NULL);

PDWORD_PTR lpdwResult=0;


SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,NULL,SMTO_ABORTIFHUNG,3,lpdwResult);



你可能感兴趣的:(界面编程)