Пишем скрипт на java перемещающий курсор раз в минуту.
2025-11-06
java# Описание проблемы
Когда у тебя нет прав на выполнение bat скриптов и стоит запрет на выполнение всех программ, кроме разрешенных. И тебя раздражает, что через пару минут экран блокируется. Хочется сделать шалость и сделать жизнь немного проще и лучше.
# Идея
Пишем скрипт, который не надо компилировать, а сразу можно выполнить. Нужна java не ниже 11 версии.
# Код
Создаем файл MouseMover.java со следующим содержимым:
import java.awt.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class MouseMover {
public static void main(String[] args) {
System.out.println("Mouse mover started at " +
LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
try {
Robot robot = new Robot();
int moveDirection = 1;
while (true) {
Point currentLocation = MouseInfo.getPointerInfo().getLocation();
int x = (int) currentLocation.getX();
int y = (int) currentLocation.getY();
// Перемещаем курсор на 1 пиксель вправо/влево
robot.mouseMove(x + moveDirection, y);
moveDirection *= -1; // Меняем направление для следующего движения
// Логируем действие
System.out.println("Mouse moved to (" + (x + moveDirection) + ", " + y + ") at " +
LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
// Ожидаем 1 минуту
Thread.sleep(60000);
}
} catch (AWTException e) {
System.err.println("Robot initialization failed: " + e.getMessage());
} catch (InterruptedException e) {
System.err.println("Thread interrupted: " + e.getMessage());
Thread.currentThread().interrupt();
}
}
}
Запускаем командой:
java MouseMover.java
Каждую минуту курсор будет перемещаться на 1 пиксель или в право, или в лево.
# Более продвинутый вариант запускает сборку проекта в Intellij Idea
import java.awt.*;
import java.awt.event.KeyEvent;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class MouseMover {
private static final String TARGET_PROJECT = "udk-pdf-scanner";
private static Robot robot;
public static void main(String[] args) {
System.out.println("Mouse mover started at " +
LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
try {
robot = new Robot();
robot.setAutoDelay(100);
int moveDirection = 1;
while (true) {
// Перемещаем курсор
moveMouse(moveDirection);
moveDirection *= -1;
// Проверяем и взаимодействуем с IntelliJ IDEA
checkAndInteractWithIDEA();
// Ждем 2 минуты
Thread.sleep(120000);
}
} catch (AWTException e) {
System.err.println("Robot initialization failed: " + e.getMessage());
} catch (InterruptedException e) {
System.err.println("Thread interrupted: " + e.getMessage());
Thread.currentThread().interrupt();
} catch (Exception e) {
System.err.println("Unexpected error: " + e.getMessage());
e.printStackTrace();
}
}
private static void moveMouse(int direction) {
try {
Point currentLocation = MouseInfo.getPointerInfo().getLocation();
int x = (int) currentLocation.getX();
int y = (int) currentLocation.getY();
robot.mouseMove(x + direction, y);
System.out.println("Mouse moved to (" + (x + direction) + ", " + y + ") at " +
LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME));
} catch (Exception e) {
System.err.println("Error moving mouse: " + e.getMessage());
}
}
private static void checkAndInteractWithIDEA() {
try {
// Получаем список процессов
ProcessBuilder processBuilder = new ProcessBuilder("tasklist", "/fo", "csv", "/nh");
Process process = processBuilder.start();
String output = new String(process.getInputStream().readAllBytes());
// Проверяем, запущена ли IntelliJ IDEA
if (output.toLowerCase().contains("idea64.exe") ||
output.toLowerCase().contains("idea.exe") ||
output.toLowerCase().contains("intellij")) {
System.out.println("IntelliJ IDEA detected - attempting to interact...");
// Переключаемся на IDEA
switchToIDEA();
// Даем время для переключения
Thread.sleep(2000);
// Пытаемся найти и запустить проект "udk-pdf-scanner"
runSimpleProject();
} else {
System.out.println("IntelliJ IDEA not running");
}
} catch (Exception e) {
System.err.println("Error checking processes: " + e.getMessage());
}
}
private static void switchToIDEA() {
try {
// Используем Alt+Tab для переключения на IDEA
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_ALT);
System.out.println("Attempted to switch to IntelliJ IDEA");
} catch (Exception e) {
System.err.println("Error switching to IDEA: " + e.getMessage());
}
}
private static void runSimpleProject() {
try {
// Комбинация для запуска проекта: Shift + F10
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_F10);
robot.keyRelease(KeyEvent.VK_F10);
robot.keyRelease(KeyEvent.VK_SHIFT);
System.out.println("Sent Shift+F10 to run project");
} catch (Exception e) {
System.err.println("Error running project: " + e.getMessage());
}
}
}