Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как установить иконку на рабочем столе


Автор: DIMONSOFT 22.7.2005, 20:12
сабж smile

Автор: Poseidon 22.7.2005, 20:52
Чо-то не совсем я понял. А понял так.
Иконка - .ico файл
Её название и координаты - путь к этому файлу
Установить на рабочем столе - ???

Что имеется ввиду?
Если просто скопировать иконку на рабочий стол, то http://vingrad.ru/DELPHI-DLP-001014
Если создать на рабочем столе ярлык, то http://vingrad.ru/DELPHI-DLP-000620

PS. Путь к рабочему столу можно получить с помощью этой функции:
Код
uses ShlObj;

function GetPathStartUpFolder(Folder:integer):string;
var
  s: PChar;
  p: PItemIDList;
begin
  s := StrAlloc(128);
    p := nil;
    SHGetSpecialFolderLocation(Form1.Handle,Folder, p);
    SHGetPathFromIDList(p, s);
    Result:= s;
end;
В Folder, для рабосего стола, нужно передавать CSIDL_DESKTOPDIRECTORY

Автор: DIMONSOFT 25.7.2005, 20:18
Извеняюсь, не установить, а изменить координаты иконки на рабочем столе(например "Мой компьютер"...)

Автор: Rrader 26.7.2005, 04:09
Код

...
Uses CommCtrl;
...
Procedure TForm1.Button1Click(Sender: TObject);
Var
 {Позиция от начала ListView}
  FPoint: TPoint;
  Desktop: THandle;
Begin
  FPoint.X := 100;
  FPoint.Y := 100;
  Desktop := FindWindowEx(FindWindowEx(FindWindow('Progman', NIL),
    0 , 'SHELLDLL_DefView', NIL), 0, 'SysListView32', NIL);
  SendMessage(Desktop, LVM_SETITEMPOSITION32, {индекс}0, LongInt(@FPoint));
End;

Принцип понятен, если что, то смотри http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/reflist.asp.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)