::SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, NULL, NULL);//使更改注册表后立即生效
此句函数我用在我的Home版的XP系统中是有效的,能立即显出更改注册表后的效果,而我将此程序在我的Professional版的XP中使用时,效果却不能立即显现,请问是为什么?
有高手帮我吗?

解决方案 »

  1.   

    http://bbs.mscommunity.com/FORUMS/ShowThread.aspx?PostID=7443
      

  2.   

    请问怎样关闭explorer进程?然后再打开它?
      

  3.   

    楼上好!
    我已在代码中加入了以下代码:
    DWORD dwResult;
    LPCTSTR lpData = _T("Policy");
    SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,NULL,(LPARAM)(LPTSTR)lpData,SMTO_NORMAL,1000,&dwResult);
    去除开始菜单中运行之类的倒是可以的,可我修改桌面快捷方式的箭头时效果还是没有,不知是怎么回事?请楼上帮忙解释一下!谢谢了!
      

  4.   

    #include <shlobj.h>
    #pragma comment ( lib, "shell32.lib" )
    SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_FLUSHNOWAIT, 0, 0 );
      

  5.   

    另外告诉楼主,不是所有对注册表的改动都是可以用SendMessage或SendMessageTimeout可以通知给操作系统的,那不万能的,你要具体问题具体分析