1;如何取出注册表值,比如墙纸的值:路径如下 Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('\Control Panel\Desktop',TRUE) then
Reg.WriteString('Wallpaper','E:\111.jpg');我如何才能取出E:\111.jpg2;如何才能用BUTTON刷新桌面?
我用了
SendMessage(Handle,VK_F5,0,0);
showwindow(Getdesktopwindow,sw_hide)
showwindow(getdesktopwindow,sw_show);
但都不行,如何才能达到刷新桌面的目的?
Reg.OpenKey('\Control Panel\Desktop',TRUE) then
Reg.WriteString('Wallpaper','E:\111.jpg');我如何才能取出E:\111.jpg2;如何才能用BUTTON刷新桌面?
我用了
SendMessage(Handle,VK_F5,0,0);
showwindow(Getdesktopwindow,sw_hide)
showwindow(getdesktopwindow,sw_show);
但都不行,如何才能达到刷新桌面的目的?
var
wnd:HWND;
begin
Wnd := GetDesktopWindow;
Wnd := FindWindowEx(Wnd, 0, 'Progman', nil);
Wnd := FindWindowEx(Wnd, 0, 'SHELLDLL_DefView', nil);
Wnd := FindWindowEx(Wnd, 0, 'SysListView32', nil);
InvalidateRect(Wnd, nil, TRUE);
end;
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('\Control Panel\Desktop',TRUE) then
Reg.WriteString('Wallpaper','E:\111.jpg');
加上:
Systemparametersinfo (SPI_SetDeskWallPaper,0,'E:\111.jpg',SPIF_UPDATEINIFILE);
桌面重画:
还可以实现刷新图标!
procedure RebuildIconCache;
var
IconW: Integer;
begin
IconW := GetSystemMetrics(SM_CXICON);
with TRegIniFile.Create('Control Panel\Desktop') do
try
WriteString('WindowMetrics', 'Shell Icon Size', IntToStr(IconW - 1));
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, 0);
WriteString('WindowMetrics', 'Shell Icon Size', IntToStr(IconW));
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, 0);
finally
Free;
end;
end;
--------------------------------------------------
RedrawWindow(0,nil,0,RDW_ERASE or RDW_INVALIDATE or RDW_ALLCHILDREN);
handle RGN(可刷新局部屏幕)
另外,我的的第一个问题如何解决,就是如何将注册表中的值E:\111.jpg取出?
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NiL, NiL);