Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Как программно свернуть все окна

04.09.2019 | Категория: Образ мышления: Assembler | Автор: ManHunter
Есть разные способы программно свернуть все открытые окна. Простой и топорный вариант решения - эмуляция нажатия клавиш Win+M, которые и выполняют команду "Свернуть все окна". Делается это через последовательность вызовов keybd_event.
  1.         ; Эмуляция нажатия клавиш Win+M
  2.         invoke  keybd_event,VK_LWIN,0,0,NULL
  3.         invoke  Sleep,1
  4.         invoke  keybd_event,'M',0,0,NULL
  5.         invoke  Sleep,1
  6.         invoke  keybd_event,VK_LWIN,0,KEYEVENTF_KEYUP,NULL
Для обратного действия надо сэмулировать нажатие комбинации Win+Shift+M:
  1.         ; Эмуляция нажатия клавиш Win+Shift+M
  2.         invoke  keybd_event,VK_LWIN,0,0,NULL
  3.         invoke  Sleep,1
  4.         invoke  keybd_event,VK_LSHIFT,0,0,NULL
  5.         invoke  Sleep,1
  6.         invoke  keybd_event,'M',0,0,NULL
  7.         invoke  Sleep,1
  8.         invoke  keybd_event,VK_LSHIFT,0,KEYEVENTF_KEYUP,NULL
  9.         invoke  Sleep,1
  10.         invoke  keybd_event,VK_LWIN,0,KEYEVENTF_KEYUP,NULL
Таким же образом эмулируется нажатие комбинации Win+D - "Показать рабочий стол". Решение, в принципе, рабочее, но целиком полагаться на программную эмуляцию клавиатуры нельзя. Нажатие клавиш может перехватить или переопределить другое приложение, может быть заполнена системная очередь ввода, да мало ли чего.

Читать статью целиком »
Просмотров: 854 | Комментариев: 5

Обработка перетаскивания ссылок в окно приложения

16.04.2019 | Категория: Образ мышления: Assembler | Автор: ManHunter

Обработка перетаскивания ссылок в окно приложения

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

Читать статью целиком »
Просмотров: 944 | Комментариев: 0

Работа с иконками файлов на Ассемблере

23.11.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter

Работа с иконками файлов на Ассемблере

Я уже рассказывал, как можно получить иконку из окна чужого приложения, сегодня тема будет похожей. Разница в том, что иконку мы будем получать из файла на диске. Применений для этого может быть много, например, чтобы отрисовать в вашем приложении красивый список файлов, нарисовать всплывающее меню, заменить иконку в собранном джойнере или патче. Для работы с иконками в WInAPI есть несколько функций, каждая со своими особенностями. В этой статье я попытаюсь подробно рассказать о них.

Читать статью целиком »
Просмотров: 1195 | Комментариев: 2

Windows 7 Taskbar API на Ассемблере

30.06.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter

Progress Bars и Overlay Icons

Продолжаю потихоньку осваивать внутренности Windows 7. В новой системе появилась такая приятная фича интерфейса, как отображение прогресса выполнения какого-нибудь действия прямо на кнопке приложения в панели задач. Впервые я увидел это в программе Total Commander при копировании и переносе файлов, сразу очень захотелось узнать как это делается и научиться делать самому. К сожалению, во всех доступных мне интернетах были найдены только примеры для Delphi, .NET и прочих языков высокого уровня. Пришлось лезть в отладчик и запасаться железным терпением, зато в результате получилось вполне рабочее решение. Для управления элементами панели задач в Windows 7 используется COM-интерфейс ITaskBarList3. Как обычно, никаких описаний в FASM нет, и все необходимое нужно искать самому или портировать с других языков.
  1. ; GUID {56FDF344-FD6D-11D0-958A-006097C9A090}
  2. CLSID_TaskbarList       dd 056FDF344h
  3.                         dw 0FD6Dh
  4.                         dw 011D0h
  5.                         db 095h, 08Ah, 000h, 060h, 097h, 0C9h, 0A0h, 090h
  6.  
  7. ; GUID {EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}
  8. IID_ITaskbarList3       dd 0EA1AFB91h
  9.                         dw 09E28h
  10.                         dw 04B86h
  11.                         db 090h, 0E9h, 09Eh, 09Fh, 08Ah, 05Eh, 0EFh, 0AFh
  12.  
  13. ; ITaskbarList3 Interface
  14. SetProgressValue        = 4*09
  15. SetProgressState        = 4*10
  16. RegisterTab             = 4*11
  17. UnregisterTab           = 4*12
  18. SetTabOrder             = 4*13
  19. SetTabActive            = 4*14
  20. ThumbBarAddButtons      = 4*15
  21. ThumbBarUpdateButtons   = 4*16
  22. ThumbBarSetImageList    = 4*17
  23. SetOverlayIcon          = 4*18
  24. SetThumbnailTooltip     = 4*19
  25. SetThumbnailClip        = 4*20
  26.  
  27. ; Типы прогрессбаров на панели задач
  28. TBPF_NOPROGRESS         = 0
  29. TBPF_INDETERMINATE      = 1
  30. TBPF_NORMAL             = 2
  31. TBPF_ERROR              = 4
  32. TBPF_PAUSED             = 8
  33.  
  34. ; Константы для работы с объектом
  35. CLSCTX_INPROC_SERVER    = 1
  36. S_OK                    = 0
Хотя сейчас будут использоваться только три функции, я привел полное описание методов COM-интерфейса ITaskbarList3, оно пригодится чуть позже.

Читать статью целиком »
Просмотров: 6754 | Комментариев: 5

01 02 03 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 3 (0.0437 сек.) / Память: 4.75 Mb
Наверх