strKey := 'Control Panel\Desktop';
    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CURRENT_USER;
      if Reg.OpenKey(strKey, True) then
      begin
        Reg.WriteString('TileWallPaper','0');
        Reg.WriteString('Wallpaper','C:\My.Html');
//刷新桌面!!不起作用
        SystemParametersInfo(SPI_SETDESKWALLPAPER,0,nil,SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE);
        Reg.CloseKey;
      end;
    finally
      Reg.Free;
    end;修改后,不能马上见到效果,SystemParametersInfo这句话不起作用???
但是在桌面的属性上什么都不修改,直接确定,就能看到修改的结果了,或者在桌面上RightClick,然后点刷新,也能看到桌面被修改的结果,怎么解决???

解决方案 »

  1.   

    使用PostMessage(Handle, WM_KEYDOWN, F5的值, 0);来模拟按键 F5 或有个系统消息或虚拟键盘、虚拟鼠标都可以实现,这个很容易的
    我原来做了一个聊天室里泡分工具的例子就使用模拟键盘来操作的!!!
    这个刷新是个小问题的!!
      

  2.   

    试试 SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);
      

  3.   

    Keybd_event共有四个参数,第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab。第二个参数为扫描码,一般不用设置,用0代替就行第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”,第四个参数一般也是置0即可。用如下代码即可实现模拟按下键,其中的XX表示XX键的虚拟键值,在这里也就是各键对应的键码,如’A’=65 keybd_event(65,0,0,0); keybd_event(65,0,KEYEVENTF_KEYUP,0); ... 
      

  4.   

    还没搞定,要引用哪个单元文件?Delphi帮助怎么没有说这些函数在哪个Units中?
      

  5.   

    不會吧, 我試過都行的代碼你還說不行??
     uses shlObj;
      

  6.   

    SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST+SHCNF_FLUSH,nil,nil);
    正解!搞定!