
Быстрый поиск
Введите фрагмент названия статьи для поиска
Stop! 1.0
24.11.2010 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Stop!
Программа Stop! предназначена для подавления окна завершения работы системы. По функционалу аналогична вызову команды "shutdown.exe -a", но более удобна в применении. Естественно, что никак не поможет при убитом процессе lsass.exe и прочих критических сбоях, но зато пригодится при лечении всякой вирусни, отладке программ и в другие моменты, когда отведенной на раздумья минуты явно недостаточно. В архиве есть программа test.exe для проверки работоспособности. Для особо запущенных случаев, когда окно завершения выскакивает постоянно, прилагается вариант программы traystop.exe, которая после запуска сворачивается в трей. Для подавления окна завершения работы достаточно кликнуть левой кнопкой мыши на иконке программы в трее. Правая кнопка - меню.
Читать статью целиком »
Просмотров: 5989 | Комментариев: 14
Как запретить Windows переходить в спящий режим
26.10.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter

Как запретить Windows переходить в спящий режим
В некоторых случаях требуется, чтобы на время работы вашего приложения компьютер постоянно оставался в активном состоянии, то есть не включался скринсейвер, не отключался монитор, система не переходила в спящий режим. Для этого надо "убедить" Windows, что за клавиатурой сидит реальный пользователь и проявляет какую-то активность, в этом случае все счетчики времени бездействия будут сбрасываться. Для программной имитации действий пользователя используются две функции: mouse_event для симуляции работы с мышкой мышки и, соответственно, keybd_event для клавиатуры. Также можно использовать более универсальную функцию SendInput, она позволяет симулировать не только мышку и клавиатуру, но и хардварные события. Есть еще более суровые варианты, связанные с ковырянием в реестре, изменением профилей электропитания, но их я рассматривать не буду.
Читать статью целиком »
Просмотров: 13315 | Комментариев: 25
Ошибка 8007273D при обновлении Windows 7
01.10.2010 | Категория: Software | Автор: ManHunter

Ошибка 8007273D при обновлении Windows 7
Однажды при попытке очередного обновления системы получил странную ошибку с кодом 8007273D и описанием "Неизвестная ошибка". Windows и без того неохотно раскрывает информацию о своих ошибках, ограничиваясь непонятными индексами. А в этот раз центр помощи вообще показал только дефолтную страницу справки с общими рекомендациями, не дав даже намека на подсказку. Перезагрузка компа, проверка фаервола и сетевых настроек тоже не произвели никакого эффекта. После углубленного изучения разных интернетов выяснилось, что проблема решается сбросом Winsock. Для этого надо запустить консоль cmd, обязательно с правами Администратора, а там ввести руками команду:
netsh winsock resetПосле этого потребуется перезагрузка компьютера. В принципе, обновления стали доступны и без перезагрузки, сразу после сброса, но при этом почему-то отвалился домашний FTP и торренты. Так что в этом случае перезагрузка как раз не лишняя.
Читать статью целиком »
Просмотров: 9576 | Комментариев: 15
Определение времени бездействия системы
05.08.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
Иногда приложениям требуется узнать время бездействия системы, то есть интервал времени, прошедший с момента когда пользователь последний раз пошевелил мышкой или нажал какую-нибудь кнопку на клавиатуре. Для определения время бездействия системы в системах Windows 2000 и старше используется функция API GetLastInputInfo. Она возвращает количество миллисекунд (тиков таймера), прошедшее от старта системы до момента последнего ввода. Время бездействия вычисляется как арифметическая разница между данными, возвращаемыми функцией GetTickCount и данными из GetLastInputInfo. В FASM, как обычно, ничего из нужных структур не определено, лезем в MSDN:Code (Assembler) : Убрать нумерацию
- section '.data' data readable writeable
- struct LASTINPUTINFO
- cbSize dd ? ; Размер структуры
- dwTime dd ? ; Время бездействия
- ends
- lii LASTINPUTINFO
Code (Assembler) : Убрать нумерацию
- ...
- ; Получить время последнего ввода
- mov [lii.cbSize],sizeof.LASTINPUTINFO
- invoke GetLastInputInfo,lii
- ; Получить текущее время в миллисекундах
- invoke GetTickCount
- ; EAX - время бездействия системы в миллисекундах
- sub eax,[lii.dwTime]
- ...
Читать статью целиком »
Просмотров: 8695 | Комментариев: 11
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
Читать статью целиком »
Просмотров: 8413 | Комментариев: 11


