答案 0 :(得分:1)
答案 1 :(得分:0)
由于我不知道为什么SHGetSetSettings
不起作用,因此不是一个答案。但是你可以做shell隐藏图标的工作;隐藏列表视图控件。
这是桌面的窗口层次结构;
'Program Manager' - Progman
'' - SHELLDLL_DefView
'FolderView' - SysListView32
'SysListView32'是显示图标的那个。
您可以测试并查看shell是否确实隐藏了列表视图;使用视图菜单中的“显示桌面图标”项隐藏图标,然后运行下面的
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”检查/取消选中菜单项,因此图标的可见性将是 - 看似 - 符合。此外,您无需刷新桌面,因为可见性更改将立即生效。
答案 2 :(得分:0)
SHCNE_ASSOCCHANGED说“文件关联已更改”。您没有更改任何文件关联。您已更改 Shell设置。看到区别?
尝试使用SHCNE_ALLEVENTS(我也会尝试使用桌面SHCNE_UPDATEDIR和SHCNE_UPDATEITEM。)
答案 3 :(得分:0)
您是否尝试过广播WM_SETTINGCHANGE message?
答案 4 :(得分:-1)