Быстрый поиск
Введите фрагмент названия статьи для поиска
Windows 7 Taskbar API на Ассемблере
30.06.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
Progress Bars и Overlay Icons
Продолжаю потихоньку осваивать внутренности Windows 7. В новой системе появилась такая приятная фича интерфейса, как отображение прогресса выполнения какого-нибудь действия прямо на кнопке приложения в панели задач. Впервые я увидел это в программе Total Commander при копировании и переносе файлов, сразу очень захотелось узнать как это делается и научиться делать самому. К сожалению, во всех доступных мне интернетах были найдены только примеры для Delphi, .NET и прочих языков высокого уровня. Пришлось лезть в отладчик и запасаться железным терпением, зато в результате получилось вполне рабочее решение. Для управления элементами панели задач в Windows 7 используется COM-интерфейс ITaskBarList3. Как обычно, никаких описаний в FASM нет, и все необходимое нужно искать самому или портировать с других языков.
Code (Assembler) : Убрать нумерацию
- ; GUID {56FDF344-FD6D-11D0-958A-006097C9A090}
- CLSID_TaskbarList dd 056FDF344h
- dw 0FD6Dh
- dw 011D0h
- db 095h, 08Ah, 000h, 060h, 097h, 0C9h, 0A0h, 090h
- ; GUID {EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}
- IID_ITaskbarList3 dd 0EA1AFB91h
- dw 09E28h
- dw 04B86h
- db 090h, 0E9h, 09Eh, 09Fh, 08Ah, 05Eh, 0EFh, 0AFh
- ; ITaskbarList3 Interface
- SetProgressValue = 4*09
- SetProgressState = 4*10
- RegisterTab = 4*11
- UnregisterTab = 4*12
- SetTabOrder = 4*13
- SetTabActive = 4*14
- ThumbBarAddButtons = 4*15
- ThumbBarUpdateButtons = 4*16
- ThumbBarSetImageList = 4*17
- SetOverlayIcon = 4*18
- SetThumbnailTooltip = 4*19
- SetThumbnailClip = 4*20
- ; Типы прогрессбаров на панели задач
- TBPF_NOPROGRESS = 0
- TBPF_INDETERMINATE = 1
- TBPF_NORMAL = 2
- TBPF_ERROR = 4
- TBPF_PAUSED = 8
- ; Константы для работы с объектом
- CLSCTX_INPROC_SERVER = 1
- S_OK = 0
Читать статью целиком »
Просмотров: 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, пытается выполнить. Например:Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- eval('function do_my_job(txt) { alert(txt); }');
- do_my_job('ok');
- </script>
Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- function add_script(txt) {
- var newScript = document.createElement("script");
- newScript.type = "text/javascript";
- newScript.text = txt;
- document.getElementsByTagName('head')[0].appendChild(newScript);
- }
- </script>
Читать статью целиком »
Просмотров: 17079 | Комментариев: 15