[파이썬] 윈도우 화면보호기 잠금을 억제하기위한 매크로 생성하는 방법
코로나로 요즘 재택근무를 하고 있어요.
회사의 컴퓨터는 화면보호기가 5분동안 움직임이 없으면 바탕화면 잠금화면으로 넘어가게 되어있어요.
보안 때문에 그렇게 처리하고 있지만, 재택근무시에 화장실을 가거나 자리를 잠시 비우게 되면 화면 보호기가 동작하여 잠근화면으로 변경됩니다.
그렇게되면 사내 메신저에 자리비움으로 표시되기 때문에 팀장님 혹은 팀원들이 보면 자리 비우고 어디갔지? 하는 생각을 하게 할 수 있어요.
그래서 생각해 낸 게 마우스 매크로입니다.
일정 시간 동안 마우스의 움직임을 주면 잠금화면으로 이동하지 않을 꺼란 생각을 하게 된거죠.
다음 샘플코드는 화면보호기 잠금해제를 위해 30초단위로 마우스를 랜덤좌표값으로 이동시키는 코드입니다.
import pyautogui
import time
import random
while(1):
x = random.randint(100, 400)
y = random.randint(100, 400)
pyautogui.move(x, y, duration=1)
currentmouseX, currentmouseY = pyautogui.position()
print(currentmouseX, currentmouseY)
time.sleep(30)
마우스 카서가 화면 모서리 끝점에 도달하게되면 다음과 같은 오류가 발생됩니다.
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED. 오류 처리방법
Traceback (most recent call last):
File "C:\pythonProject\main.py", line 9, in <module>
pyautogui.move(x, y, duration=1)
File "C:\pythonProject\venv\lib\site-packages\pyautogui\__init__.py", line 598, in wrapper
returnVal = wrappedFunction(*args, **kwargs)
File "C:\pythonProject\venv\lib\site-packages\pyautogui\__init__.py", line 1313, in moveRel
_mouseMoveDrag("move", None, None, xOffset, yOffset, duration, tween)
File "C:\pythonProject\venv\lib\site-packages\pyautogui\__init__.py", line 1499, in _mouseMoveDrag
failSafeCheck()
File "C:\pythonProject\venv\lib\site-packages\pyautogui\__init__.py", line 1722, in failSafeCheck
raise FailSafeException(
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.
Process finished with exit code 1
위와 같은 오류를 방지하기 위해서는 pyautogui.FAILSAFE = False 를 설정하면 됩니다.
또 다른 방법으로 랜덤좌표로 이동한 마우스 커서의 위치를 다시 원래 위치로 이동시키는 방법이 있어요.
저는 후자를 선택해서 처리하였습니다.
import pyautogui
import time
import random
while(1):
x = random.randint(100, 400)
y = random.randint(100, 400)
pyautogui.move(x, y, duration=1)
# 좌표값 출력
currentmouseX, currentmouseY = pyautogui.position()
print(currentmouseX, currentmouseY)
# 마우스 커서를 800,800 좌표로 이동처리
pyautogui.moveTo(800, 800, duration=0.5)
time.sleep(30)
매크로는 좋은방향으로 사용하면 업무에 효율을 높여줍니다. 악용하지는 마세욥.
참고로 원격 데스크톱 연결창을 최소화시켜서 작업표시줄로 내려버리면 코드는 정상적으로 동작하지만
마우스 포인트 위치가 0, 0으로 이동됨으로 화면보호기가 동작하게 됩니다.
아마도 최소화시키면 마우스 포인트의 위치를 이동시키지 못하는 것으로 생각됩니다.