请问怎么样才能在不重启动或者注消的方式来刷新系统
       我正在做一个关于修改注册表的程序.但当我做完后发现我的程序要在生新启动或者注消后才能生效,我想请问各位大虾.怎么样才能刷新这系统.
急,请各位高手尽快解答.我明天就要delphi考试了.先谢谢各位了

解决方案 »

  1.   

    不知道你的刷新系统是什么意思。
    注销和重起才是能叫做刷新系统啊?
    更改注册表选项有的必须这么做了。
    如果改一程序可以结束 explore.exe 然后再运行
      

  2.   

    //try
    uses ShlObj;procedure TForm1.Button1Click(Sender: TObject);
    begin
      SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
    end;
      

  3.   

    我又看了一下其它方面的内容,觉得职业清洁式的做法还是完成了一定的功能,比如右键(我现在作的是隐藏驱动器,希望打开我的电脑把c,d,e驱动器隐藏起来)保存文件时打不开驱动器.但是我还没有办法证实是不是其它原因引起的.因为我不清楚你给的那的函数是什么意思.
      

  4.   

    //from
    http://search.csdn.net/expert/topic/51/5101/2001/4/30/110206.htm
    Kingron:
    呵呵,20'太少了,你知道我是弄了多久才搞明白吗?写出来让大家共享:
    SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);//刷新文件关联图标
    其中SHChangeNotify还有多个地方可以刷新,具体的看帮助!
    SHChangeNotify(SHCNE_ALLEVENTS , SHCNF_FLUSH,nil,nil);//发生所有的事件,系统应该刷新响应的项目
    function SHUpdateRecycleBinIcon():boolean;stdcall;external 'shell32.dll' name 'SHUpdateRecycleBinIcon';//刷新回收站图标
    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);//通知系统设置改变
    var
    buf:pchar;
    ...
    getmem(buf,SizeOfBuf);//
    strpcopy(buf,'注册表的主键,例如Software\Microsoft\windows\currentversion\Explorer\ToolBar');
    SendMessage(HWND_BROADCAST,WM_SETTINGCHANGE,0,buf);
    //通知系统刷新响应的键值,如果前面的没有起作用,那么可以采用这个方法。
    systemparametersinfo(SPI_SETDESKWALLPAPER,0,pchar(path),0);
    //上面的是通知系统更改了墙纸,其中path为墙纸的路径。
    同样,SystemParametersInfo()还可以对系统进行很多方面的刷新,例如更改了桌面的大小等等,你可以看看帮助,我不可能在这儿把所有的都写出来。
    就说这么多吧,希望你能举一反三