日期:2014-05-18  浏览次数:20916 次

调用API函数刷新桌面与右键刷新桌面的问题
利用网站上的API执行刷新桌面成功了,但是我修改了桌面上的文件夹的属性,刷新了没反应,
右键刷新桌面就能体现修改,感觉是不是少了加载?新手请教。
  [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
  public static extern IntPtr GetDesktopWindow();
  [DllImport("user32.dll ", CharSet = CharSet.Auto, ExactSpelling = true)] 
  public static extern bool RedrawWindow(IntPtr hwnd, COMRECT rcUpdate, IntPtr hrgnUpdate, int flags); 


   
  public class COMRECT 
  { 
  public int left; 
  public int top; 
  public int right; 
  public int bottom; 
  public COMRECT() 
  { 
  } 
  public COMRECT(int left, int top, int right, int bottom) 
  { 
  this.left = left; 
  this.top = top; 
  this.right = right; 
  this.bottom = bottom; 
  } 
  } 

  //调用示例如下: 
  RedrawWindow(GetDesktopWindow(), null, IntPtr.Zero, 0x85);

------解决方案--------------------
最后一个参数,应该是API的RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE ,不知道你的0x85是否包含了这些标志,

另外,一般来说第一个参数也可以不用GetDesktopWindow(),直接给null就可以刷新桌面,