uses CommCtrl; var i, k:Integer; XYold, XY : Array[1..100] of TPoint; CurPos:TPoint;
Сначала получаем Handle DeskTop'a:
function GetHandle: 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;
Получаем координаты иконок на столе. Как оказывается, это самое трудное. Если посмотреть код GETITEMPOSITION в CommCtrl.pas, то его повтор в Delphi
почему-то не работает. Т.е. он работает, но непонятно как:)) Поэтому делаем так:
function GetXY(hwndLV: HWND; i: Integer; var ppt: TPoint): Bool; var PointBuf : ^TPoint; begin try PointBuf := VirtualAlloc(NIL,Sizeof(TPoint), $8000000 or MEM_COMMIT, PAGE_READWRITE); Result := Bool( SendMessage(hWndLV, LVM_GETITEMPOSITION, i, Longint(PointBuf))); if Result thenbegin ppt.x := PointBuf^.x; ppt.y := PointBuf^.y; end; finally VirtualFree(PointBuf,0,MEM_RELEASE); end; end; ...
Сохраняем координаты иконок в XYold:
for k:=1 to i do GetXY(GetHandle,k-1,XYold[k]);
Иконка с индексом 0 - всегда "Мой компьютер", остальные - у кого как:)) ... А вот, как по таймеру двигать иконки туда-сюда, если подвести к ним курсор:
procedure
TForm1.Timer1Timer(Sender: TObject); var k:Integer; begin GetCu
rsorPos(CurPos); for k:=1 to i dobegin G
etXY(GetHandle,k-1,XY[k]); if (CurPos.x>XY[k].x+4) and (CurPos.xand (CurPos.y>XY[k].y+4) and (CurPos.ythenbegin SendMessage(GetHandle,LVM_SETITEMPOSITION,k-1,MakeLong(XY[k].x+Random(64)-Random(64), XY[k].y+Random(64)-Random(64))); end; end; end; ...
И, наконец, возвращаем все иконки на место перед завершением программы:
procedure TForm1.FormDestroy(Sender: TObject); var k:Integer; begin for k:=1 to i do SendMessage(GetHandle,LVM_SETITEMPOSITION,k-1,MakeLong(XYold[k].x,XYold[k].y)); end;
Может быть эти фрагменты кому-нибудь помогут:))) А моя программка до сих пор валяется на http://freesoft.kulichki.net/katalog/ufen/5003.html
АПИ-функции для работы с оборудованием
Существуют ли АПИ-функции для работы с оборудованием ? Стоит задача проверять наличие и характеристики процессора, ...
Почта на Делфи
Как написать почтовый сервер который будет уметь получать и отправлять почту?
GLScene форум
К модераторам: Посмотрите что здесь http://www.tecknik.net/blogback/data/bb.php?blog=GLScene&post=190504 творится... ...
Помогите с навернутым запросом
Есть запрос select 1.a sum(2.b),3.c,sum(4.d) from 1,2,3,4 where 1.a='12345' and 1.s=3.s and ,3.c in ('125','365') ...
Мир Borland Kylix. Расширение возможностей Kylix приложения: смешиваем Object Pascal и C++
В этой статье рассматривается совместное использование Kylix и C/C++ (gcc). Описывается демонстрационная библиотека, позволяющая использовать в Kylix приложении функции Qt library, не определенные в CLXDisplay API (элемент управления QDial). Также приводятся примеры экспорта функций из объектных файлов C/C++ и создания разделяемой библиотеки (shared objects file) в Borland Kylix.
Delphi 7: Для профессионалов
Несмотря на солидную толщину книга не является справочником, напротив, - это, скорее, учебник, призванный сделать работу программиста в среде Delphi действительно эффективной и профессиональной. В этой книге автор попытался практически полностью исключить справочный материал, сконцентрировавшись на технологиях эффективного использования Delphi. Приведено более 300 примеров. Как сказал один из подписчиков групп новостей, «книги Кэнту — это по сути „delphi.filtered“, только больше и лучше». Книга предназначена для программистов, разработчиков и всех, серьезно интересующихся программированием в среде Delphi.
Автор: Кэнту М.
Хокку дня
Сентябрьских яблок Тонкая кислинка, И губ твоих...
Афоризмы
Если мне хочется прочитать роман, я пишу его (Бенджамин Дизраэли)
Фраза дня
- Господа, третий день не хочется работать. Что бы это значило? - Сегодня среда!
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Джоржии (США) разрешается бить любого, кто оскорбляет вас бранными выражениями.
В городе Гейнсвилл (США) издано специальное распоряжение, предписывающее “есть курицу руками”.
И на закуску коротенький анекдот
- Привет дорогая, мой козел наконец разрешил мне пользоваться своим компьютером, даже завел почтовый ящик. Так, что пиши мне по адресу: жена собака жизни точка нет.