Иконки на рабочем столе
Какие функции позволяют:
1) перечислить иконки
2) получить инф-ю о них (положение, как минимум)
3) спрятать/показать
Перемещение *.lnk файлов в другой каталог НЕ приветствуется!
Есть задача - по горячей клавише убирать иконки с рабочего стола или восстанавливать их на столе.
Какие функции позволяют:
1) перечислить иконки
2) получить инф-ю о них (положение, как минимум)
3) спрятать/показать
Перемещение *.lnk файлов в другой каталог НЕ приветствуется!
Рабочий стол перекрыт сверху компонентом 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 этого ListView, определенный в модуле CommCtrl, для того, чтобы манипулировать рабочим столом. Смотрите тему "LVM_xxxx messages" в оперативной справке по Win32.
К примеру, следующая строка кода:
--------------------------------------------------------------------------------
ListView_SetItemPosition(GetDesktopListViewHandle,i,x,y); {Не забудьте в uses добавить CommCtrl}
ярлыку с индексом i, задаст координаты (x,y). К примеру Мой компьютер имеет индекс 0, т.е i:=0;
информация с кулиба 2000
Kuliba
Делаю просто SW_HIDE этому ListView и все! Круто!