Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перемещение ярлыков [D7, Win2k, WinXP]


apic ©   (2008-07-21 14:42:00) 

У меня следующая проблема! Мне необходимо программно менять координаты расположения ярлыков на рабочем столе. Причем менять координаты необходимо в зависимости от названия ярлыка, например ярлыку "notepad" необходимо установить координаты х=100, у=200.


apic   (2008-10-30 08:18:00) [1]

Нет через три месяца до инета добрался, так надоже отблагодарить!!!!


Rouse_   (2008-10-29 14:03:00) [2]

Эмм... ты три месяца что-ли пробовал? :))))


apic   (2008-10-29 10:20:00) [3]

Все получилось!


apic   (2008-07-23 07:23:00) [4]

Всем спасибо, сейчас все попробую!


apic   (2008-07-23 07:23:00) [5]

Удалено модератором


oldman   (2008-07-21 16:47:00) [6]


> apic   (21.07.08 14:42)  
>  например ярлыку "notepad" необходимо установить координаты
> х=100, у=200.


Не забудь проверить, не находится ли по этим координатам другой (очень нужный) ярлык...


Rouse_   (2008-07-21 16:40:00) [7]


> ListView_SetItemPosition

А структурку кто в чужое ВАП перемещать будет? :)
Что-то наподобие этого должно быть:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1215465648&n=18


Vlad Oshin   (2008-07-21 16:30:00) [8]

не получилось, делал так

procedure TForm3.Button1Click(Sender: TObject);
var
i,DT,x,y:integer;
aa: TLVFindInfo;

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;

begin
  x:=150;
  y:=150;
  DT:=GetDesktopListViewHandle;

// думаю тут надо как-то поиграться, хелп почитать
  aa.flags:=LVFI_STRING or LVFI_PARTIAL;
  aa.psz:=pchar('txt');
  i:=ListView_FindItem(DT,-1,aa);


  ListView_SetItemPosition(DT,i,x,y);
end;


apic   (2008-07-21 15:38:00) [9]

Большое спасибо Vlad Oshin, но у меня уже есть подоюный кусок кода, вся проблема в том, как узнать порядковый номер ярлыка с названием "notepad" или "MS Office", к примеру...


Vlad Oshin   (2008-07-21 15:17:00) [10]

uses CommCtrl;

procedure TForm3.Button1Click(Sender: TObject);
var
i,x,y:integer;

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;

begin
  i:=2;
  x:=150;
  y:=150;
  ListView_SetItemPosition(GetDesktopListViewHandle,i,x,y);
end;


apic   (2008-07-21 15:07:00) [11]

Зачем и кому я меняю это мой понт! Прошу от сарказма воздержаться! Не знаете решение проблемы, не надо засарять форум, а за помощь буду благодарен!


oldman   (2008-07-21 14:54:00) [12]

кому менять?
себе?
пользоателю?

У меня, например, ярлыки стоят так, как надо мне.
Поменяешь - убью!


Наверх

Титульная страница Поиск, карта сайта Написать письмо