Программирование на C++ глазами хакера


Управление ярлыками на Рабочем столе - часть 2


А теперь самое интересное — перемещение ярлыков по экрану. Для этого можно использовать следующий код:

HWND DesktopHandle = FindWindow("ProgMan", 0); DesktopHandle = GetWindow(DesktopHandle, GW_CHILD); DesktopHandle = GetWindow(DesktopHandle, GW_CHILD); for (int i=0; i<200; i++) SendMessage(DesktopHandle, LVM_SETITEMPOSITION, 0, MAKELPARAM(10, i));

Как и в предыдущем примере, ищется элемент управления, содержащий ярлыки. Потом запускается цикл от 0 до 200, в котором посылается сообщение функцией SendMessage со следующими параметрами:

  • окно, которое должно получить сообщение, — в данном случае это элемент управления с иконками;
  • сообщение, которое нужно послать, — LVM_SETITEMPOSITION (изменяет, позицию иконки);
  • индекс иконки, которую надо переместить;
  • новая позиция иконки. Этот параметр состоит из двух слов: х и у позиции элемента. Чтобы правильно разместить числа, мы воспользовались функцией MAKELPARAM.

Таким образом, можно как угодно шутить над Рабочим столом Windows. Единственный недостаток описанного примера проявляется в Windows XP, где иконки двигаются по экрану не плавно, а скачками. Вот такая уж специфика этой версии Windows. Зато в других вариантах — красота полнейшая, и шутка получается очень интересная.

Примечание
Исходный код этого примера вы можете найти на компакт - диске в каталоге \Demo\Chapter3\ArrangeIcons.

Что еще можно сделать с ярлыками на Рабочем столе? Да практически все, что можно сделать с элементом управления List View. Рассмотрим наиболее любопытные возможности.




Начало  Назад  Вперед



Книжный магазин