Blog. Just Blog

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

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

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

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

Исследование защиты игр Playrix Entertainment

26.06.2010 | Категория: Темная сторона Силы | Автор: ManHunter

Исследование защиты игр Playrix Entertainment

Playrix Entertainment - еще один крупный дилер шароварных компьютерных игр. Как и другие дилеры, они сотрудничают напрямую с разработчиками, некоторые игры разрабатывают сами, поэтому иногда новые игрушки у них на сайте появляются раньше, чем у других. Но бесплатно нести радость людям они не хотят, и это очень плохо.

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

Уральские пельмени

21.06.2010 | Категория: А еще я туда ем! | Автор: ManHunter

Уральские пельмени

Пельмени - это не только полуфабрикат для скоростного приготовления "чо-нибудь пожрать", настоящие домашние пельмени - это вкусное и питательное блюдо. Название блюда произошло из удмуртского и коми-пермяцкого языков ("пельнянь" - "ухо-хлеб"). Сегодня я буду готовить пельмени по-уральски, как их готовила моя бабушка. Во времена моего детства лепка пельменей была настоящим семейным событием, все собирались в большой комнате, кто-то раскатывал тесто, кто-то месил фарш, кто-то лепил пельмени. Моя почетная мужская обязанность была в прокрутке фарша на мясорубке. А потом пельмени варили в огромной кастрюле, все дружно собирались за столом и кушали до отвала.

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

Портативный медиаплеер Qumo Vision 4Gb

18.06.2010 | Категория: Обзоры техники | Автор: ManHunter

Qumo Vision 4Gb

Поддался потребительскому импульсу, проявил слабость и купил себе ко Дню Рождения такой девайс. Это портативный мультимедийный плеер Qumo Vision. Критерий выбора был один: понравился огромный TFT экран 4,3 дюйма. Я решил, что смотреть на нем фильмы в дороге - одно удовольствие. Однако радость от покупки быстро сменилась разочарованием. Но обо всем по порядку.

Первый косяк вылез сразу после подключения свежекупленного девайса к компьютеру через USB-шнур. Windows 7 признал его как флешку, ничего дополнительно ставить не пришлось. Да и ставить особо нечего, никаких дисков с драйверами в комплекте не было. Но когда я попытался записать фильмы, то был неприятно удивлен. На дворе 21-й век, а тут скорость передачи данных не превышает 3-4 мегабайта в секунду, 700-меговый фильм заливается в плеер 10-15 минут. Ладно, дождался заливки пары фильмов, переходим к просмотру. Настроек видео и звука вообще нет, все дефолтное. На фильмах более-менее хорошего качества или размером от 1,5 Гб начинается заметное торможение. Если с этим еще можно как-то смириться, то возникают новые грабли: периодически изображение и звук вообще могут замирать на пару секунд, и это даже не зависит от качества фильма. Звуковые дорожки в файле не переключаются и не выбираются, принудительно берется первая попавшаяся. Управление неудобное. Часть клавиш расположена на верхней грани плеера, часть на лицевой панели, причем в разных ситуациях клавиши навигации или дублируются, или нет, что тоже добавляет путаницы. В плеере есть несколько встроенных игрушек, я попытался поиграть в "Змейку", но так и не осилил это марсианское управление, поэтому затею поиграть оставил. Память плеера расширяется карточками MicroSD, но у меня это единственное устройство под такие карточки, так что покупать их не буду. По какой причине разработчики не нашли в огромном корпусе еще чуть-чуть места, чтобы расширить слот до более распространенных SD-карт - непонятно. Плеер заряжается только от стационарного зарядного устройства, при подключении к компьютеру через USB зарядка не производится.

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

Динамическое добавление скриптов на web-страницу

16.06.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Современные динамические интерфейсы web-страниц подразумевают не только изменение содержимого различных тегов, но и динамическую подгрузку скриптов JavaScript с их последующим выполнением. Например, получение скриптов или данных для них через AJAX. Способы передачи данных я тут рассматривать не буду, а расскажу о том, как динамически добавить скрипт на сформированную web-страницу и затем выполнить его. Это можно сделать как минимум двумя способами. Первый способ - добавление скрипта средствами JavaScript с использованием стандартной функции eval. Она получает в качестве аргумента строку и, рассматривая ее содержимое как код JavaScript, пытается выполнить. Например:
  1. <script type="text/javascript">
  2. eval('function do_my_job(txt) { alert(txt); }');
  3. do_my_job('ok');
  4. </script>
Второй способ, более корректный, - это добавление скриптов через DOM. При этом создается новый объект script, заполняется его тип и текст, а затем созданный объект добавляется в качестве дочернего элемента к элементу head. В этом случае добавленный скрипт будет сразу же выполнен. Для удобства я написал небольшую функцию, получающую в качестве аргумента текст скрипта, и добавляющую его на страницу.
  1. <script type="text/javascript">
  2. function add_script(txt) {
  3.     var newScript document.createElement("script");
  4.     newScript.type "text/javascript";
  5.     newScript.text txt;
  6.     document.getElementsByTagName('head')[0].appendChild(newScript);
  7. }
  8. </script>
Во всех тестовых браузерах (IE 5.5-8, Opera 7-10, Firefox 2-3, Chrome, Safari и т.д.) скрипт выполнялся также при добавлении его к элементу body. Опытным путем установлено, что скрипт срабатывает при добавлении и к другим элементам страницы, но лучше, наверное, так не делать для сохранения кроссбраузерности и совместимости.

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

01 ... 352 353 354 355 356 357 358 ... 411
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0195 сек.) / Память: 4.5 Mb
Наверх