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


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


На Рабочем столе ярлыки расположены аналогично строкам в элементе управления List View , поэтому ими очень легко управлять. Для этого нужно найти окно с классом ProgMan . Затем внутри этого окна необходимо получить указатель на элемент управления, содержащий ярлыки.

Все вышесказанное в виде кода выглядит следующим образом:

HWND DesktopHandle = FindWindow("ProgMan", 0);
DesktopHandle = GetWindow(DesktopHandle, GW_CHILD);
DesktopHandle = GetWindow(DesktopHandle, GW_CHILD);

Здесь ищется окно с заголовком ProgMan. Хотя вы такое окно не видите, оно существует еще со времен Windows третей версии (может и раньше) и называется Program Manager. Далее, с помощью функции GetWindow, определяется дочернее окно. После этого находим следующее дочернее окно. Вот теперь мы получили указатель на системный объект класса SysListView32. Этот элемент как раз и содержит все иконки Рабочего стола.

Мы можем управлять ярлыками, посылая сообщения с помощью функции SendMessage. Например, если выполнить следующую строку кода, то все ярлыки будут упорядочены по левому краю экрана:

SendMessage(DesktopHandle, LVM_ARRANGE, LVA_ALIGNLEFT, 0);

Рассмотрим каждый из параметров функции SendMessage :

  • DesktopHandle — окно, которому надо послать сообщение;
  • тип сообщения — LVM_ARRANGE, указывает на необходимость отсортировать иконки;
  • первый параметр для сообщения — LVA_ALIGNLEFT, упорядочивает иконки по левому краю;
  • второй параметр для сообщения — оставляем нулевым.

Если параметр LVA_ALIGNLEFT заменить на LVA_ALIGNTOP, то иконки будут выровнены по верхнему краю окна.

Следующая строка кода удаляет все элементы с Рабочего стола:

SendMessage(DesktopHandle, LVM_DELETEALLITEMS , 0, 0);

Код похож на тот, что мы уже использовали, только здесь посылается команда LVM_DELETEALLITEMS, которая заставляет удалить все элементы. Попробуйте выполнить эту команду, и весь Рабочий стол очистится. Только удаление происходит не окончательно, и после первой же перезагрузки компьютера все вернется на свои места. Но если в системе запустить невидимую программу, которая будет через определенные промежутки времени очищать ярлыки, то эффект будет впечатляющим.




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



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