Blog. Just Blog

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

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

Восстановление системы в Windows 7

23.12.2010 | Категория: Software | Автор: ManHunter

Восстановление системы в Windows 7

Операционная система Windows 7 обзавелась таким сверхмощным инструментом, как функция восстановление системы. Кроме отката состояния системы до заранее сохраненных точек, можно восстановить систему после гораздо более серьезных сбоев, например, когда поврежден системный загрузчик или отсутствуют системные файлы. Почти все действия выполняются автоматически, пользователю достаточно лишь несколько раз кликнуть мышкой. С ужасом вспоминаю убогую консоль восстановления Windows XP, когда в случае крупных неполадок было проще переставить Windows заново, чем убивать кучу времени за попытками ее оживить. Итак, познакомимся с функцией восстановления системы Windows 7 поближе.

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

Stop! 1.0

24.11.2010 | Категория: Мои программы | Автор: ManHunter

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

Программа Stop! предназначена для подавления окна завершения работы системы. По функционалу аналогична вызову команды "shutdown.exe -a", но более удобна в применении. Естественно, что никак не поможет при убитом процессе lsass.exe и прочих критических сбоях, но зато пригодится при лечении всякой вирусни, отладке программ и в другие моменты, когда отведенной на раздумья минуты явно недостаточно. В архиве есть программа test.exe для проверки работоспособности. Для особо запущенных случаев, когда окно завершения выскакивает постоянно, прилагается вариант программы traystop.exe, которая после запуска сворачивается в трей. Для подавления окна завершения работы достаточно кликнуть левой кнопкой мыши на иконке программы в трее. Правая кнопка - меню.

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

Как запретить Windows переходить в спящий режим

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

В прикладном приложении для имитации действий пользователя надо установить таймер, например, на секундный интервал, и в его функции-обработчике симулировать движение мыши. Нажатия кнопок мыши и клавиш на клавиатуре симулировать не надо, так как эти действия могут наложиться с действиями реального пользователя, а вот перемещение мышки на какое-нибудь незаметное расстояние будет в самый раз. Почитаем повнимательнее документацию к функции mouse_event. Координаты перемещения задаются в условных единицах - микки, которые высчитываются по формуле: 1 микки = (ширина или высота разрешения монитора) / 65535. Если не указан флаг MOUSEEVENTF_ABSOLUTE, то координаты считаются относительные, то есть от текущего положения курсора. Первоначальный вариант решения был в перемещении курсора на 1 микки от текущего положения курсора, а затем в возвращении его обратно. Но, к сожалению, на Windows XP этот способ все-таки двигал курсор (спасибо ezfalc0n за подсказку). Следующий вариант, вообще без движения, также сбрасывает счетчик времени бездействия системы, так что будем использовать именно его:
  1.         ; Симулировать событие от мышки, оставляя ее на месте
  2.         invoke  mouse_event,MOUSEEVENTF_MOVE,0,0,0,0
Вот и все решение. Теперь Windows будет бодрствовать ровно столько, сколько вам нужно. Можете убедиться в этом, запустив одновременно программу для определения времени бездействия системы и пример из приложения к статье. Вы увидите, что даже когда вы сами не прикасаетесь к мышке и клавиатуре, таймер бездействия системы (функция GetLastInputInfo) остается на нулевой отметке.

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

Ошибка 8007273D при обновлении Windows 7

01.10.2010 | Категория: Software | Автор: ManHunter

Ошибка 8007273D при обновлении Windows 7

Однажды при попытке очередного обновления системы получил странную ошибку с кодом 8007273D и описанием "Неизвестная ошибка". Windows и без того неохотно раскрывает информацию о своих ошибках, ограничиваясь непонятными индексами. А в этот раз центр помощи вообще показал только дефолтную страницу справки с общими рекомендациями, не дав даже намека на подсказку. Перезагрузка компа, проверка фаервола и сетевых настроек тоже не произвели никакого эффекта. После углубленного изучения разных интернетов выяснилось, что проблема решается сбросом Winsock. Для этого надо запустить консоль cmd, обязательно с правами Администратора, а там ввести руками команду:

netsh winsock reset
После этого потребуется перезагрузка компьютера. В принципе, обновления стали доступны и без перезагрузки, сразу после сброса, но при этом почему-то отвалился домашний FTP и торренты. Так что в этом случае перезагрузка как раз не лишняя.

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

Определение времени бездействия системы

05.08.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
Иногда приложениям требуется узнать время бездействия системы, то есть интервал времени, прошедший с момента когда пользователь последний раз пошевелил мышкой или нажал какую-нибудь кнопку на клавиатуре. Для определения время бездействия системы в системах Windows 2000 и старше используется функция API GetLastInputInfo. Она возвращает количество миллисекунд (тиков таймера), прошедшее от старта системы до момента последнего ввода. Время бездействия вычисляется как арифметическая разница между данными, возвращаемыми функцией GetTickCount и данными из GetLastInputInfo. В FASM, как обычно, ничего из нужных структур не определено, лезем в MSDN:
  1. section '.data' data readable writeable
  2.  
  3. struct  LASTINPUTINFO
  4.         cbSize   dd ?   ; Размер структуры
  5.         dwTime   dd ?   ; Время бездействия
  6. ends
  7.  
  8. lii     LASTINPUTINFO  
Получение времени бездействия системы:
  1.         ...
  2.         ; Получить время последнего ввода
  3.         mov     [lii.cbSize],sizeof.LASTINPUTINFO
  4.         invoke  GetLastInputInfo,lii
  5.  
  6.         ; Получить текущее время в миллисекундах
  7.         invoke  GetTickCount
  8.  
  9.         ; EAX - время бездействия системы в миллисекундах
  10.         sub     eax,[lii.dwTime]
  11.         ...
Это был самый простой способ, работающий на всех новых системах. В старых операционках типа Windows 9x функция GetLastInputInfo отсутствует, поэтому там придется использовать другой, более громоздкий способ с применением глобальных системных хуков.

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

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