近日看到有这么一个软件DesktopListview,可以将桌面的图标显示方式更改为“列表”模式,颇有那么点意思,有源码(AutoIt),于是就看了一下,原理很简单,但是,这个软件只能更改为“列表”模式,不能更改其他显示模式,而且不能恢复,要想恢复,重启explorer或者重启电脑,这点是我等不能接受的,于是,写一下主要的核心代码,包括C语言和Delphi语言,有需要的,稍微自己扩充一下即可。
C语言的代码
HWND h1,h2,h3; if ((h1 = FindWindow("Progman",0) )!= 0) if ((h2 = FindWindowEx(h1,0,"SHELLDLL_DefView",0)) != 0) if ((h3 = FindWindowEx(h2,0,"SysListView32",0)) != 0) SendMessage(h3,0x1000+142,3,0);
Delphi语言的代码
var h1,h2,h3 : THandle; begin h1 := Windows.FindWindow('Progman',nil); if h1 <> 0 then begin h2 := Windows.FindWindowEx(h1,0,'SHELLDLL_DefView',nil); if h2 <> 0 then begin h3 := Windows.FindWindowEx(h2,0,'SysListView32',nil); if h3 <> 0 then begin SendMessage(h3,$1000+142,3,0); end; end; end; end;
参数取值解释
主要是SendMessage中的参数取值。
第二个参数“$1000+142”是常量“LVM_SETVIEW”的值;
第三个参数“3”为文件查看方式,官方给出如下信息(对应的数值应为1-5,0为默认值):
- LV_VIEW_DETAILS
- LV_VIEW_ICON
- LV_VIEW_LIST
- LV_VIEW_SMALLICON
- LV_VIEW_TILE
这个实现挺新颖,以前也看到过,也没想过弄成列表。不过想想列表了也没啥好处,不美观。
大大能不能对程序完善一下,我的桌面文件名比较长,显示到一定宽度之后就变成省略号了,最好能够自定义列表宽度 ➡
❓
我机器上是固定宽度。
偶的也是 win7 x64