This code could be useful for example if you changed the wallpaper through code and need to refresh the desktop

Code:
//Method 1

uses
  ShlObj;

procedure RefreshDesktop1;
begin
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

//Method 2

procedure RefreshDesktop2;
var
  hDesktop: HWND;
begin
  hDesktop := FindWindowEx(FindWindowEx(FindWindow('Progman', 'Program Manager'), 0,
    'SHELLDLL_DefView', ''), 0, 'SysListView32', '');
  PostMessage(hDesktop, WM_KEYDOWN, VK_F5, 0);
  PostMessage(hDesktop, WM_KEYUP, VK_F5, 1 shl 31);
end;