
Быстрый поиск
Введите фрагмент названия статьи для поиска
Обработка перетаскивания файлов (Drag'n'Drop)
10.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Если в вашем приложении используется обработка файлов, то кроме открытия через стандартные диалоги выбора файла и каталога, можно получать их из Проводника Windows перетаскиванием. Обработка перетаскивания файлов выполняется в два этапа. При инициализации диалогового окна приложения должна вызываться функция DragAcceptFiles. Параметр функции TRUE разрешает принятие файлов окном, а FALSE его запрещает, так что прием файлов можно регулировать динамически. Непосредственно прием файлов окном выполняется функцией DragQueryFile.Code (Assembler) : Убрать нумерацию
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ...
- ; Инициализация окна
- cmp [msg],WM_INITDIALOG
- je wminitdialog
- ; Обработка перетаскивания файлов
- cmp [msg],WM_DROPFILES
- je wmdropfiles
- ...
- wminitdialog:
- ; Разрешить окну принимать файлы
- invoke DragAcceptFiles,[hwnddlg],TRUE
- jmp processed
- wmdropfiles:
- ; Обработка полученных файлов. Функция DragQueryFile возвращает имя
- ; файла с указанным индексом (нумерация индексов начинается с нуля).
- ; Для получения общего количества переданных файлов ее надо вызвать с
- ; индексом равным 0FFFFFFFFh
- invoke DragQueryFile,[wparam],0FFFFFFFFh,NULL,NULL
- ; В регистре EAX количество переданных файлов
- ; Перебрать по очереди все переданные окну файлы
- xor ecx,ecx
- process_file:
- push ecx eax
- ; Получить имя файла или каталога в буфер fname
- invoke DragQueryFile,[wparam],ecx,fname,100h
- ...
- ; Тут будет обработчик переданных файлов и каталогов
- ...
- pop eax ecx
- inc ecx
- cmp ecx,eax
- jne process_file
- ; Освободить дескриптор операции
- invoke DragFinish,[wparam]
- ...
После выполнения всех необходимых действий с файлом, надо освободить память, выделенную под файлы, при помощи функции DragFinish.
Читать статью целиком »
Просмотров: 5869 | Комментариев: 2
Готовим свинину в пиве
06.12.2008 | Категория: А еще я туда ем! | Автор: ManHunter

Готовим свинину в пиве
Как я и говорил, мясо я люблю больше шоколада. Поэтому сегодня у меня на обед свинина в пиве.
Читать статью целиком »
Просмотров: 10248 | Комментариев: 4
Фишинг серийников в Blumentals Screensaver Factory
04.12.2008 | Категория: Темная сторона Силы | Автор: ManHunter
При помощи программы Blumentals Screensaver Factory вы можете создавать красивые скринсейверы в виде слайдшоу из ваших фотографий. Саму "фабрику" можно без проблем найти в интернете, но речь сейчас не о ней, а о скринсейверах, которые сделаны с ее помощью. В Blumentals Screensaver Factory есть возможность создания коммерческих скринсейверов, защищенных серийным номером, и некоторые аффтары умудряются торговать подобными дешевками, на создание которых было затрачено всего несколько минут. Такие скринсейверы можно узнать по окну настроек:
Окно настроек скринсейвера
В зависимости от использованной версии "фабрики" вкладок может быть больше или меньше, но общий стиль оформления остается неизменный.
Читать статью целиком »
Просмотров: 6376 | Комментариев: 1
Окно поверх всех окон (Always On Top)
03.12.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Установка окна поверх всех других окон бывает удобна, когда надо привлечь внимание пользователя к важной информации, или окно с какими-либо данными должно находиться всегда перед глазами. Такое свойство окна можно прописать сразу в ресурсах, а можно изменять динамически, например при нажатии на кнопку-чекбокс "Always on top" или при изменении каких-нибудь внутренних настроек вашей программы.Для создания окна поверх всех других окон, оно должно быть описано в ресурсах с флагом DS_SYSMODAL. Для динамического изменения используется функция SetWindowPos с флагами SWP_NOMOVE и SWP_NOSIZE. Флаги нужны для того, чтобы не изменять размеры и положение окна.
Code (Assembler) : Убрать нумерацию
- ; Идентификатор чекбокса в ресурсах
- ID_ONTOP = 101
- ; Сегмент кода
- section '.code' code readable executable
- ...
- ; Процедура обработчика окна
- proc DialogProc hwnddlg,msg,wparam,lparam
- ; Обработка нажатия на кнопку-чекбокс
- cmp [wparam],BN_CLICKED shl 16 + ID_ONTOP
- je .ontop
- ...
- .ontop:
- ; Получить состояние чекбокса
- invoke IsDlgButtonChecked,[hwnddlg],ID_ONTOP
- cmp eax,BST_CHECKED
- ; По умолчанию будем считать что галочка поставлена
- mov eax,HWND_TOPMOST
- je @f
- ; Галочка не поставлена, убрать атрибут "поверх всех окон"
- mov eax,HWND_NOTOPMOST
- @@:
- ; Установить параметр окна "поверх всех окон", изменение размера
- ; и положения окна не производится, это установлено флагами
- invoke SetWindowPos,[hwnddlg],eax,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE
- jmp .processed
- ...
- ; Секция ресурсов
- section '.rsrc' resource data readable
- ; Диалог описан со стилем DS_SYSMODAL - поверх всех окон
- dialog demonstration, 'Always on top Demo', 0, 0, 190, 55,\
- WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL
- ...
- ; Кнопка-чекбокс, которая будет управлять положением окна
- dialogitem 'BUTTON','Always on top', ID_ONTOP, 5, 150, 63, 13,\
- WS_VISIBLE+BS_AUTOCHECKBOX+BS_FLAT
- ...
Читать статью целиком »
Просмотров: 12147 | Комментариев: 3
Шпаргалки для Web-мастера по HTML, CSS и JavaScript
30.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter

Шпаргалки для Web-мастера по HTML, CSS и JavaScript
В свое время преподаватели учили меня: "Не надо всего знать, надо знать где взять". Для больших объемов информации я, конечно, предпочитаю бумажные справочники. А когда надо быстро посмотреть синтаксис какой-нибудь редко используемой функции, параметры тега или код цвета, то очень выручают онлайн-справочники и файлы-шпаргалки. Вот основные сайты и ресурсы для облегчения поиска.
Читать статью целиком »
Просмотров: 21211 | Комментариев: 13


