Версия для печати

Как заставить рабочий стол Windows обновится?

Оцените материал
(1 Голосовать)

Как заставить рабочий стол Windows обновится?

Способ первый

procedure TForm1.Button1Click(Sender: TObject);
var
  Desktop: HWND;
begin
   Desktop := FindWindow( 'Progman', 'Program Manager' );
   Desktop := FindWindowEx( Desktop, 0, 'SHELLDLL_DefView', '' );
   Desktop := FindWindowEx( Desktop, 0, 'SysListView32', '' );
   PostMessage( Desktop, WM_KEYDOWN, VK_F5, 0 );
   PostMessage( Desktop, WM_KEYUP, VK_F5, 1 shl 31 );
end;

Способ второй

uses
   ..., ShlObj, ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  ActiveDesktop: IActiveDesktop;
begin
   ActiveDesktop := CreateComObject( CLSID_ActiveDesktop ) as IActiveDesktop;
   ActiveDesktop.ApplyChanges( AD_APPLY_ALL or AD_APPLY_FORCE );
end;

Способ третий

uses
   ..., ShlObj;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil );
end;
Прочитано 5276 раз