先GetDesktopWindow取得它hWnd
再PostMessage给它

解决方案 »

  1.   

    我的问题是实际是做了一个更换桌面的程序,现在的问题是。程序执行后。我发现。在属性里的桌面的图片已经变了。但是桌面上没有改变。点右键刷新后就会变了。。所以现在的问题是怎么进行桌面的刷新。
    你的方法我试了。但是postmessage里的参数怎么设置?我设置的是0,0,0,结果发现没有变化!怎么办?
      

  2.   

    应该是
    PostMessage(hDeskWnd,WM_PAINT,0,0)
    吧?第一个参数是句柄,第二个是消息,在WM_PAINT消息里后两个参数不用所以给0
      

  3.   

    我试了还是没有对桌面进行刷新/
    我用的是另外一个函数是
    systemparametersinfo(spi_setdeskwallpaper,0,nil,spif_sendchange);
    可是也没有刷新!我的问题是注册表里的hkey_current_user下的control panel\desktop的
    wallpaper的值改变了。但是桌面如何进行刷新一下!
      

  4.   

    改个方法.
    由于在桌面上是通过按F5来刷新的,试验一下Post一个F5的击键事件来它,看看行不.
      

  5.   

    Systemparametersinfo(SPI_SETDESKWallpaper,0,Nil,SPIF_SendChange);{向Windows发送消息,通知Windows更换壁纸}
      

  6.   

    修改墙纸?刷新用下面的代码:
    systemparametersinfo(SPI_SETDESKWALLPAPER,0,pchar(path),0);
    ///其中Path就是那个墙纸的路径
      

  7.   

    我试了以上的方法均不行。。我的桌面的图纸还是没有改变。属性里面的图纸是改变了,但是桌面非的用鼠标右键刷新一下才行,难道真的创建一个刷新程序?进行桌面刷新。
    还有我怎么没有找到screen.refresh
      

  8.   

    我发现在桌面按右键选“活动桌面”--“按Web页查看”前面的勾上,上面的语句就不能刷新了
    去掉勾就可以刷新。但我找不到这勾是在注册表哪的,只要找到了在程序中把它去掉再刷新就可
      

  9.   

    程序中怎么解决不按Web页查看??
      

  10.   

    你说什么?kingron不明白你的帖子呢/在哪里?