Как заставить рабочий стол 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; |