给你个思路,使用GetWindow、GetDC等函数取得Desktop的窗体及窗体句柄,再给该窗体发送一个Repaint或Refresh的消息。

解决方案 »

  1.   

    getdc(0)
    得到屏幕句丙
    然后
    发送REFRESH消息
      

  2.   

    使设置桌面为活动窗口,SendKeys "{F5}",用kbd_event也行。
      

  3.   

    Option ExplicitPrivate Declare Sub keybd_event Lib "user32" _
       (ByVal bVk As Byte, _
        ByVal bScan As Byte, _
        ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)Private Const VK_F5 = &H74
    Private Const VK_LWIN = &H5B
    Private Const VK_M = &H4D
    Private Const KEYEVENTF_KEYUP = &H2Private Sub Command1_Click()
        '模拟按下Win+M键,最小化所有应用程序窗口以显示桌面
        Call keybd_event(VK_LWIN, 0, 0, 0)
        Call keybd_event(VK_M, 0, 0, 0)
        Call keybd_event(VK_M, 0, KEYEVENTF_KEYUP, 0)
        Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
        
        '产生一定延时
        DoEvents
        DoEvents
        
        '模拟按下F5键,刷新桌面
        Call keybd_event(VK_F5, 0, 0, 0)
        Call keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0)
    End Sub
      

  4.   

    InvalidateRect,InvalidateRectBynum VB声明 
    Declare Function InvalidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long)
    Declare Function InvalidateRectBynum& Lib "user32" Alias "InvalidateRect" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long) 
    说明 
    这个函数屏蔽一个窗口客户区的全部或部分区域。这会导致窗口在事件期间部分重画 
    返回值 
    Long,非零表示成功,零表示失败 
    参数表 
    参数 类型及说明 
    hwnd Long,待屏蔽窗口的句柄 
    lpRect RECT,用于描述待屏蔽矩形部分的一个矩形结构。可用InvalidateRectBynum函数,同时将lpRect设为零(Long数据类型),从而屏蔽(或禁用)整个窗口 
    bErase Long,TRUE(非零)导致指定的区域在重画前先删除 
    注解 
    一旦系统有些更新屏幕的闲置时间可用,windows就会重画窗口
     
      

  5.   

    InvalidateRectBynum 0, 0, 0
      

  6.   

    Call SHChangeNotify(SHCNE_ALLEVENTS, SHCNF_IDLIST, lpil, 0)