Blog. Just Blog

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

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

Альтернативный выбор файлов в Проводнике Windows 7

25.05.2011 | Категория: Software | Автор: ManHunter

Классический выбор нескольких файлов

Обычно для выделения нескольких файлов в Проводнике Windows нужно зажать клавишу Shift или Ctrl, а затем мышкой выделить нужные файлы. В Windows 7 появилась альтернативная возможность выделения файлов - при помощи чекбоксов. То есть можно выделять файлы при помощи мышки, не трогая клавиатуру.

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

Изменение фонового рисунка экрана входа в Windows 7

26.02.2011 | Категория: Software | Автор: ManHunter

Изменение фонового рисунка экрана входа в Windows 7

Сегодня будем учиться менять фоновый рисунок, который появляется при входе в систему Windows 7. Можно просто заменить фоновый рисунок background.bmp, который хранится в папке c:\Windows\System32\oobe или можно воспользоваться какими-нибудь посторонними твикерами. Но лучше всего применить средства, которые компания Microsoft предоставляет OEM-поставщикам компьютеров для персонализации системы под свой брэнд. Это займет немного больше времени, но зато результат будет лучше.

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

Индикатор сетевой активности в Windows 7

19.07.2010 | Категория: Software | Автор: ManHunter

Скриншот программы Network Activity Indicator

Разработчики Windows 7 зачем-то выпилили из системы такую замечательную функцию, как индикатор сетевой активности. Это такая иконка в трее в виде двух маленьких мониторчиков, показывающих, соответственно, отправку или получение данных по сети. К счастью, наш соотечественник Игорь Толмачев написал программу Network Activity Indicator, с успехом возвращающую в Windows 7 эту функцию обратно. Кроме визуальной индикации сетевой активности, программа ведет статистику трафика, позволяет через меню настраивать различные параметры ваших сетевых подключений. Последняя версия на момент публикации 1.5 от июня 2010 года. Network Activity Indicator имеет крохотный размер (около 80 килобайт в архиве), не мусорит в системе и не требует установки. Программа абсолютно бесплатна, более того, на офсайте доступны для скачивания исходники. Рекомендую.

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

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, оно пригодится чуть позже.

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

Отключение кнопки "Свернуть все окна" в Windows 7

03.06.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
Захотелось поэкспериментировать с новым интерфейсом Windows 7, а конкретно решил убрать кнопку "Свернуть все окна" из трея. Зачем мне это надо - вопрос другой, здесь важна сама реализация. Кнопка "Свернуть все окна", как в сказке про Кащея, находится внутри нескольких других окон. Вложенность и иерархию классов можно определить, например, при помощи программы WinDowzer или любой другой, показывающей дерево всех окон системы. Для поиска родительского окна системного трея с названием класса Shell_TrayWnd я использовал функцию FindWindow, а для определения хэндлов вложенных дочерних окон с классами TrayNotifyWnd (область уведомлений) и TrayShowDesktopButtonWClass (сама кнопка "Свернуть все окна") - функцию FindWindowEx.
  1.         ...
  2.         ; Найти окно трея
  3.         invoke  FindWindow,stw,NULL
  4.         or      eax,eax
  5.         jz      no_button
  6.  
  7.         ; Найти окно уведомлений в трее
  8.         invoke  FindWindowEx,eax,NULL,tnw,NULL
  9.         or      eax,eax
  10.         jz      no_button
  11.  
  12.         ; Найти кнопку "Свернуть все окна"
  13.         invoke  FindWindowEx,eax,NULL,tsc,NULL
  14.         or      eax,eax
  15.         jz      no_button
  16.  
  17.         ; Спрятать кнопку "Свернуть все окна"
  18.         ; Если надо показать кнопку, то замените флаг на SW_SHOW
  19.         invoke  ShowWindow,eax,SW_HIDE
  20.  
  21.         ; Кнопка не найдена
  22. no_button:
  23.         ...
  24.  
  25. ; Названия классов окон для поиска
  26. stw     db      'Shell_TrayWnd',0  ; Название класса окна трея
  27. tnw     db      'TrayNotifyWnd',0  ; Название класса окна области уведомлений
  28. tsc     db      'TrayShowDesktopButtonWClass',0  ; Название окна кнопки
К сожалению, мне не удалось полностью убрать кнопку из трея, даже когда она скрыта, на ее месте остается пустое пространство. Попытки изменить ширину кнопки перед ее скрытием при помощи функции SetWindowPos успеха тоже не принесли.

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

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