Изобретаем Велосипед и Модернизируем его…
Ну кто сказал, что системное программирование это сложно? Понятно, что большинство из вас прикладные программисты. Однако это не избавляет вас от обязанностей разбираться в некоторых аспектах работы операционной системы… Иначе можно докатиться до того, что просто смех будет да и только!
Так однажды некие аборигены на Мисте, на полном серьёзе утверждали что Idle это не процесс вовсе, а простой системы. Вспомнилось мне сразу как герой романа М.Булгакова Иван Бездомный так же безапелляционно доказывал Воланду, что бога то нет! Потому, что собственно и не было его никогда!
Так вот я на полном серьезе утверждаю --- Idle это системный процесс PID которого 0 и зависит от этого процесса многое, в том числе и сброс страничного пула памяти… Ну да бог с ним с процессом то! Речь пойдет дальше не о нем. А покопаемся мы на этот раз в системе блокировки рабочей станции, разберемся что там и к чему и сами реализуем этот механизм в своем собственном приложении. Ну что господа? Вперед, за белым кроликом?!
Первое, что мы предпримем, это посмотрим на стандартный механизм Windows. Кликаем правой кнопкой мыша по десктопу, дальше из менюшки свойства переходим на вкладку заставка и ставим флажок защита паролем. Теперь через заданный интервал если мы не будем дергать мышь за хвост и стучать по тёте Клаве всплывет скринсейвер и ещё через несколько секунд вернуться назад можно будет лишь разлочив станцию! Вот именно с этим мы и будем разбираться. Первое, что сразу очевидно, надо работать с сообщениями мыши и клавиатуры. Причем работать надо по крупному т.е. ставить глобальные хуки. Если с клавой все более мение ясно, ставим фильтр по KEYDOWN и отслеживаем нажатия игнорируя отпускания то с мышем чуть сложней. Надо отслеживать перемещения как по X так и по Y т.е. цепляться надо не к событию перемещения мышки, а к координатам курсора в привязке к оси времени. На форме я разместила все нужные контролы, которые помогут наглядно увидеть и понять принцип работы этого механизма!
Так как хуки глобальные логичней всего разместить их в DLL а раз так то писать эту часть будем на чистом Win32API. А вот приложение которое загрузит эту DLL напишем на MFC (благо что это лишь обертка вокруг API).
Запускайте наше приложение, открывайте блокнот или word, пишите текст, двигайте мышкой, меняйте настройки прямо на ходу и наслаждайтесь результатом…
Ну вот и все мы научили наше приложение понимать когда мы работаем, а когда нас нет и надо позаботиться о безопасности (В соответствии с настройками) и вовремя запереть комп от хищных хакеров снующих тут и там!
P.S. Композиция которая проигрывается когда крутится заставка исполняется группой Space Buddha и называется Self Therapy! В ресурсах она целиком не смотря на то, что проигрывается всего 30 сек. Так что кто хочет, вооружайтесь лопатой т.е. «ресурс-билдером» и копайте…
Всех с наступающим Новым годом! И спасибо всем кто помог мне написать эту статью и реализовать сам WinLocker!