桌面图标太多的时候总是显示不开,但是在Windows里面查看很多文件的时候可以列表形式查看,但是桌面不行了,所以我自己研究了一下,写了一个桌面图标列表查看的工具
这个工具运行第一次是列表查看,再运行就是正常查看,非常简单程序运行后便结束,不会占用内存,加载在启动里面这样每次进入桌面图标便会是列表方式查看了
两种查看方式的对比
program Project1;
//作者:孙占伟 //[email protected]
uses Windows, SysUtils;
function GetDesktopHwnd(): HWND; var hWin: HWND; bufClassName: array[0..255] of Char; begin //取得窗体的HWND hWin := FindWindow('Progman', nil); //取得窗体的下一个HWND hWin := GetWindow(hWin, GW_CHILD); GetClassName(hWin, bufClassName, 255); while Trim(bufClassName) <> 'SHELLDLL_DefView' do begin if hWin <> 0 then begin hWin := GetNextWindow(hWin, GW_HWNDNEXT); GetClassName(hWin, bufClassName, 255); end else begin Result := hWin; Exit; end; end; hWin := GetWindow(hWin, GW_CHILD); GetClassName(hWin, bufClassName, 255); while Trim(bufClassName) <> 'SysListView32' do begin if hWin <> 0 then begin hWin := GetNextWindow(hWin, GW_HWNDNEXT); GetClassName(hWin, bufClassName, 255); end else begin Result := hWin; Exit; end; end; OutputDebugString(PChar(IntToStr(hWin))); Result := hWin; end;
procedure SetDesktopSmallIcon(); var hWin: HWND; WinStyle: Integer; begin hWin := GetDesktopHwnd; if hWin <> 0 then begin WinStyle := GetWindowLong(hWin, GWL_STYLE); SetWindowLong(hWin, GWL_STYLE, (WinStyle xor $0002)); end; end;
begin SetDesktopSmallIcon(); end.
|
请发表评论