Как выровнять иконки на рабочем столе к левому краю.
Для начала необходимо получить дескриптор рабочего стола, который представляет из себя обычный ListView.
Пример:
function GetDesktopListViewHandle: THandle; var S: String; begin Result := FindWindow('ProgMan', nil); Result := GetWindow(Result, GW_CHILD); Result := GetWindow(Result, GW_CHILD); SetLength(S, 40); GetClassName(Result, PChar(S), 39); if PChar(S) 'SysListView32' then Result := 0; end;
Как только дескриптор рабочего стола получен, можно с ним работать при помощи обычных API функций (через юнит CommCtrl). См. сообщения LVM_xxxx в хелпе по Win32.
Следующая строчка кода выравнивает иконки на рабочем столе к левому краю: