Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

The code below calls SHGetSetSettings function to hide desktop icons but it just unchecked "Show desktop icons" from the view menu.

I called SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSHNOWAIT, nil, nil); to update the desktop but that doesn't work?

var
lpss: SHELLSTATE;
begin
  lpss.Data := High(cardinal);
  lpss.Data2 := Low(cardinal);
  SHGetSetSettings(lpss,SSF_HIDEICONS,true);
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSHNOWAIT, nil, nil);
end;
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.4k views
Welcome To Ask or Share your Answers For Others

1 Answer

isa, to refresh the desktop you can send the F5 key to the progman (Program Manager) window

PostMessage(FindWindow('Progman', nil), WM_KEYDOWN, VK_F5, 3);

another alternative to hide the desktop icons is

ShowWindow(FindWindow('Progman', nil),SW_HIDE); //hide the icons desktop and refresh the screen

to show again

ShowWindow(FindWindow('Progman', nil),SW_SHOW); //show the icons of the desktop and refresh

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...