Зараз здоров'я в нас вистачає і ми можемо не задумуватися про наші очі, про нашу спину, про наші руки... та пройде 10-20 років і все зміниться. У всіх є професійні хвороби, нажаль і програмістів не оминула така участь.
Почавши задумуватися над цими питаннями прийшов до висновку, що головна наша проблема в захопленні. Ми так захоплюємося що забуваємо про час. Вже в нас будуть боліти очі, а ми все одно думаємо, що ще годинку попрацюємо і все. А потім ще годинку і так поки за вікном не буде підійматися ранкове сонце.
Я себе не можу змусити відпочивати (, тому написав скриптик на пітоні, який висить в кроні і з частотою в одну годину на 10 хвилин робить екран чорним і блокує всі клавіши, щоб прожка вимикалась лише перезавантаженням. Хочеш не хочеш, а відпочивати змушує.
Якщо ви не програміст на Пітоні, то з цієї папки можна дістати і скрипт і конфіг і екзешник (якщо немає пітону) - http://bitbucket.org/presidentua/web-alarm/src/0b350733d9e1/save_eye/
Якщо ж ви Пітон-програміст і маєте час, то пропоную вам іспит - не дивлячись на мою прогу напишіть аналог за таким ТЗ: - при запуску робити чорний екран - ховати мишку - блокувати всі клавіши - блокувати Таск Манаджер - нормально виконуватися при запуску через Task Scheduler (!!! тут будуть складності в нових версіях Віндовса).
Бережіть себе!
PS: Рішення цієї задачки дивіться нижче в тексті.
1. Перехоплеення всіх клавіш через лібу pyHook:
2. Таск Манаджер вимикається через Рееєстр:
def OnKeyboardEvent(event):
if event.Key.lower() in ['lwin', 'tab', 'lmenu']:
return False
else:
return True
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
3. І нарешті з розгортанням на весь екран є проблема, бо нові версії віндовс не дозволяють напряму виконувати функцію SetForegroundWindow для неактивної проги. Щоб обійти це спочатку повинні приєднати свій процес до вводу активного процесу і потім ми вже можемо викликати SetForegroundWindow:
def set_DisableTaskmgr(value):
import _winreg
task_key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Policies\System')
_winreg.SetValueEx(task_key, 'DisableTaskmgr', 0, _winreg.REG_DWORD, value)
_winreg.CloseKey(task_key)
currentThreadId = win32api.GetCurrentThreadId()
remoteThreadId = win32process.GetWindowThreadProcessId(win32gui.GetForegroundWindow())[0]
ctypes.windll.user32.AttachThreadInput(remoteThreadId, currentThreadId, True)
win32gui.SetForegroundWindow(pygame.display.get_wm_info()['window'])
ctypes.windll.user32.AttachThreadInput(remoteThreadId, currentThreadId, False)
