-
[JAVA] 화면 보호기( Screen saver ) 켜지는 것 방지, 마우스 저절로 움직이게 하기, 하지만 눈엔 안보임 (feat. java.awt.Robot, TimerTask)WEB/BACK 2021. 4. 22. 11:53반응형
동기
어떠한 이유로 사용자가 키보드나 마우스를 제어하지 않지만 화면은 계속 켜져서 시스템이 돌아가야 하는 경우가 있다. js를 활용해서 구현하는 코드들도 있던데, 나는 java코드로 이루어진것이 필요해서 갑작스럽게 screen saver 방지를 구현해 보았다. 이 코드는 마우스를 움직이는 코드지만 실제로 움직이는게 보이지는 않는다. +사용자가 아예 알아차릴 수 없음.
동작 방식
처음 로드되고 0.1초에 최초 실행되며, 2초에 한번씩
마우스가 오른쪽으로 1만큼 이동했다가 왼쪽으로 다시 1만큼 이동해서 원위치하는 코드.
File1.java
import java.awt.MouseInfo; import java.awt.Point; import java.awt.PointerInfo; import java.awt.Robot; import java.util.Timer; import java.util.TimerTask; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ROBOT { public static String mouse_moving = "N"; public static int mouse_move_count = 0; public static final Timer m_timer = new Timer(); public static TimerTask m_task; public static void mouseMove() { m_task = new TimerTask() { private Logger LOGGER = LoggerFactory.getLogger(LoginController.class); @Override public void run() { if(true) { LOGGER.debug("---mouse move----------------"+mouse_move_count); try{ Robot robot = new Robot(); PointerInfo pointerInfo = MouseInfo.getPointerInfo(); Point point = pointerInfo.getLocation(); //마우스 x축 +1 이동 int x = point.x + 1; robot.mouseMove(x,point.y); //마우스 제자리로 이동 x = x - 1; robot.mouseMove(x,point.y); }catch(Exception exception) { LOGGER.debug("실패"); } mouse_move_count++; mouse_moving = "Y"; } } }; m_timer.schedule(m_task, 100,2000);//(run, 처음대기시간, 기간) 1000 = 1초 } }
테스트를 돌려보면,
File2.java
public class TEST { public static void main(String[] args) { ROBOT.mouseMove(); } }
console 창에 다음과 같이 찍히는걸 확인 할 수 있다.
java.awt.Robot을 활용한 스크린세이버(screen saver) 방지 포스팅 끝.
반응형'WEB > BACK' 카테고리의 다른 글