Не совсем ответ, так как я не знаю, почему SHGetSetSettings
не работает.Однако вы можете сделать то, что делает оболочка, чтобы скрыть значки;скрыть элемент управления List-View .
Это окно иерархии рабочего стола;
'Program Manager' - Progman
'' - SHELLDLL_DefView
'FolderView' - SysListView32
SysListView32 - это изображение, отображающее значки.оболочка действительно скрывает представление списка;скройте значки с элементом «показать значки на рабочем столе» в меню просмотра, затем запустите ниже,
function GetDesktopListView: HWnd;
begin
Result := GetWindow(GetWindow(FindWindow('Progman', nil), GW_CHILD), GW_CHILD);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(GetDesktopListView, SW_SHOW);
end;
, и значки отобразятся снова./ снимите флажок с пункта меню с помощью «SHGetSetSettings», видимость значков будет - на первый взгляд - в соответствии.Кроме того, вам не нужно обновлять рабочий стол, поскольку изменение видимости вступит в силу немедленно.