Blog. Just Blog

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

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

Моргание окна на Ассемблере

12.12.2017 | Категория: Образ мышления: Assembler | Автор: ManHunter
Наверняка вы не раз сталкивались с тем, что приложение, которое свернуто или работает в фоновом режиме, но хочет привлечь внимание пользователя, использует эффект моргания окна. Это может быть оповещение об окончании длительного процесса или просто информация для пользователя, с которой ему надо как можно быстрее ознакомиться. И действительно, такой способ работает. В этой статье я вам расскажу, как такой эффект реализуется.

Самый простой способ моргнуть окном - использовать стандартную функцию FlashWindow. Для ее использования нужно только знать хэндл окна, которое должно моргнуть, вот и все. Это не обязательно должно быть окно именно вашего приложения, вы можете легко моргать любым окном, доступным в системе. Вызов простейший:
  1.         ; hwnd - хэндл окна, которое должно моргнуть
  2.         invoke  FlashWindow,[hwnd],FALSE
В качестве бонуса она возвращает статус окна, к которому была применена: нулевое значение, если окно не было активным, и ненулевое значение, если было. Это полезно, например, в том случае, когда надо продолжать привлекать внимание пользователя до тех пор, пока он не активирует нужное окно. Недостаток функции FlashWindow в том, что параметры моргания зависят от системы, мы со своей стороны никак на них повлиять не можем.

Если требуется иметь полный контроль над параметрами моргания, то надо использовать более продвинутую функцию FlashWindowEx. Но сперва придется самостоятельно описать используемые структуры и константы, так как FASM в стандартной комплектации их не знает.
  1. ; Описание структуры для моргания окна
  2. struct FLASHWINFO
  3.   cbSize    dd ?
  4.   hwnd      dd ?
  5.   dwFlags   dd ?
  6.   uCount    dd ?
  7.   dwTimeout dd ?
  8. ends
  9.  
  10. ; Флаги режимов моргания окна
  11. FLASHW_CAPTION = 0x00000001
  12. FLASHW_TRAY    = 0x00000002
  13. FLASHW_ALL     = 0x00000003
  14.  
  15. flash       FLASHWINFO ; Структура для моргания окна
Перед вызовом функции в структуре FLASHWINFO заполняются все необходимые параметры: хэндл окна, режим моргания (только заголовок окна, только кнопка окна на панели задач или все сразу), количество морганий и частота.
  1.         ; Заполнить структуру FLASHWINFO
  2.         mov     [flash.cbSize],sizeof.FLASHWINFO
  3.         ; Хэндл окна, которое должно моргнуть
  4.         mov     ecx,[hwnd]
  5.         mov     [flash.hwnd],ecx
  6.         ; Режим моргания - заголовок и кнопка окна в панели задач
  7.         mov     [flash.dwFlags],FLASHW_ALL
  8.         ; Количество морганий, в моем примере 10 итераций
  9.         mov     [flash.uCount],10
  10.         ; Частота морганий
  11.         mov     [flash.dwTimeout],80
  12.         ; Вызвать функцию 
  13.         invoke  FlashWindowEx,flash
Возвращаемое значение такое же, как и в случае с FlashWindow. Во время работы функций FlashWindow и FlashWindowEx все повторные вызовы моргания будут игнорироваться.

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

Кекс с изюмом и финиками

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

Кекс с изюмом и финиками

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

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

Выставка "Снимок на память. Фотоискусство и фототехника в конце XIX - начале XX века"

07.12.2017 | Категория: Жизнь в оффлайне | Автор: ManHunter

Выставка "Снимок на память. Фотоискусство и фототехника в конце XIX - начале XX века"

Фотография была изобретена в 1839 году одновременно во Франции и в Англии, затем она быстро распространилась в другие страны Европы и на Американский континент. В России также очень скоро узнали об этом изобретении и стали широко внедрять его в жизнь. Интенсивное развитие науки, техники, промышленности меняло сознание человека, настраивало его на научное исследование окружающего мира, с использованием новых инструментов в его постижение. Технические новинки были очень востребованы и сразу находили живой отклик у населения. Так случилось и с фотографией.

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

Установка ImageMagic для PHP5 под Windows

04.12.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Установка ImageMagic для PHP5 под Windows

По умолчанию PHP идет с библиотекой для обработки изображений GD. Удобная и мощная штука, которой хватает для большинства задач. Но иногда ее функций становится недостаточно. В этом случае надо установить дополнительную библиотеку ImageMagic. Вот и у меня на рабочем проекте возникла необходимость работать с графическими файлами в формате SVG. Продакшен крутится на CentOS, а рабочая машина под Windows. Везде пришлось устанавливать ImageMagic. Под CentOS все делается парой команд, а вот под Windows пришлось повозиться.

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

Исследование защиты программы AbstractCurves

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

Скриншот программы AbstractCurves

AbstractCurves - интересный генератор абстрактных изображений, позволяющий создавать потрясающие обои или фоновые рисунки, а также добавлять к фотографиям различные эффекты. Интерфейс у программы такой, что невольно задумываешься о поллитровке, но это не главный ее недостаток. Без регистрации постоянно будет появляться напоминание о необходимости выложить деньги, а до этого момента вы не сможете сохранить результаты ваших трудов. Только вот двадцатка зелени в хозяйстве совсем не лишняя, лучше потратить ее на что-нибудь другое.

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

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