Blog. Just Blog

Прячем ярлыки на рабочем столе

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Образ мышления: Assembler | Автор: ManHunter
Очередная мелкая развлекушка на Ассемблере. Сегодня будем прятать все ярлыки на рабочем столе. Нам не понадобится никаких громоздких структур, объектов, интерфейсов и прочей паранормальщины. И что хорошо, фактически все ярлыки остаются на своих местах, ничего не надо потом восстанавливать, ведь при прятании просто скрывается дочерний элемент окна десктопа, в котором ярлыки находятся.
  1. ; Сегмент данных
  2. section '.data' data readable writeable
  3.  
  4. szProg db 'ProgMan',0
  5.  
  6. ; Сегмент кода
  7. section '.code' code readable executable
  8.         ...
  9.         invoke  FindWindow,szProg,NULL
  10.         invoke  GetWindow,eax,GW_CHILD
  11.         invoke  GetWindow,eax,GW_CHILD
  12.         ; Сохранить хэндл окна с ярлыками
  13.         mov     ebx,eax
  14.         ; Ярлыки показываются?
  15.         invoke  IsWindowVisible,ebx
  16.         or      eax,eax
  17.         jne     @f
  18.         ; Нет, показать
  19.         invoke  ShowWindow,ebx,SW_SHOW
  20.         jmp     loc_exit
  21. @@:
  22.         ; Да, скрыть
  23.         invoke  ShowWindow,ebx,SW_HIDE
  24. loc_exit:
При запуске первым делом ищется окно с названием класса "ProgMan", затем поочередно находятся его первое дочернее окно и дочернее окно этого окна. Именно в нем находится Listbox со всеми ярлыками. Затем проверяется видимость этого окна. Если ярлыки отображаются, то они будут спрятаны, ну и наоборот. Если повесить такую программу на какую-нибудь горячую клавишу, то получится этакий ультра-лайтовый вариант блокировки компьютера, чтобы временно скрыть содержимое рабочего стола от излишне любопытных глаз, не запрещая при этом возможность работы за компьютером. Или можно использовать как программу-шутку для пугания юзеров. Естественно, после перезагрузки все возвращается на свои места.

В приложении пример программы с исходным текстом, которая при каждом запуске поочередно прячет или показывает ярлыки на рабочем столе.

Пример программы с исходным текстом (FASM)Пример программы с исходным текстом (FASM)

Hide.Show.Desktop.Icons.Demo.zip (1,279 bytes)


Поделиться ссылкой ВКонтакте
Просмотров: 1069 | Комментариев: 3

Метки: Assembler, окна
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
wet (14.08.2020 в 17:47):
Цитатаполучится этакий ультра-лайтовый вариант блокировки компьютера, чтобы временно скрыть содержимое рабочего стола от излишне любопытных глаз, не запрещая при этом возможность работы за компьютером. Или можно использовать как программу-шутку для пугания юзеров.


Ну это вряд ли :) Если только уж совсем юзер неопытный. Через контекстное меню на десктопе все иконки легко включаются штатным образом: Вид -> Отобжажать значки рабочего стола путем повторного выставления "галочки". Так же и выключаются, без программирования.

Вот если немного изменить Ваш код, у Program Manager отключить видимость без поиска дочерних, то да, тогда и иконки спрячутся, и контекстное меню вызвать не выйдет. Но это уже другая история...
ManHunter (12.08.2020 в 13:09):
Ну да, отследить последний пользовательский ввод и активность системы, по таймеру скрыть значки, по началу активности вернуть обратно. Тоже применение. Типа скринсейвера-обоесейвера :)
DRON (10.08.2020 в 00:46):
Некое практическое воплощение данной идеи:
http://www.softwareok.com/?sei...DesktopIcons
Скрывает по таймеру. Используется, по видимому, для любования обоями.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0086 сек.) / Память: 4.5 Mb
Наверх