Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.5k views
in Technique[技术] by (71.8m points)

delphi - How do I make the "show/hide desktop icons" setting take effect?

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...