Java 当mose为';时,是否可以使.exe文件自动运行;你没动吗?

Java 当mose为';时,是否可以使.exe文件自动运行;你没动吗?,java,Java,我制作了一个java应用程序,它将当前时间显示为数字时钟,我想在鼠标不移动10分钟后自动运行该文件。有人有什么想法吗 另外,我对StackOverflow和编码都是新手,如果这真是一个愚蠢的问题,请原谅。根据您的评论,Java不生成.exe文件。您需要将jar文件放入一个特殊的可执行包装器中才能完成这一任务。我可以帮你 您可能希望将应用程序作为服务器运行。这可以为这个问题提供更多的线索 在您的应用程序中: 设置时钟组件,使其不可见。创建用于监视系统鼠标指针位置(x,y)的。利用TimerTask

我制作了一个java应用程序,它将当前时间显示为数字时钟,我想在鼠标不移动10分钟后自动运行该文件。有人有什么想法吗


另外,我对StackOverflow和编码都是新手,如果这真是一个愚蠢的问题,请原谅。

根据您的评论,Java不生成.exe文件。您需要将jar文件放入一个特殊的可执行包装器中才能完成这一任务。我可以帮你

您可能希望将应用程序作为服务器运行。这可以为这个问题提供更多的线索

在您的应用程序中:

设置时钟组件,使其不可见。创建用于监视系统鼠标指针位置(x,y)的。利用TimerTask的run()方法中的来跟踪鼠标指针的位置。跟踪鼠标最后一次移动的时间。如果10分钟后没有鼠标移动,则显示时钟(使其可见)。如果愿意,当再次移动鼠标时,将使时钟再次不可见。与此相关的代码可能如下所示:

首先声明并初始化四(4)个类成员变量:

int mouseX = 0;
int mouseY = 0;
long timeOfLastMovement = 0L;
TimerTask mouseMonitorTask;
在类中的某个位置复制/粘贴此方法。按照您认为合适的方式进行必要的更改:

private void startMouseMonitoring() {
    mouseMonitorTask = new TimerTask() {
        @Override
        public void run() {
            PointerInfo info = MouseInfo.getPointerInfo();
            Point pointerLocation = info.getLocation();
            long currentTime = java.lang.System.currentTimeMillis();
            //System.out.format("Mouse Location - X: %d, Y: %d\n", pointerLocation.x, pointerLocation.y);
            float elapsedTime = (((currentTime - timeOfLastMovement) / 1000F) / 60);
            if (pointerLocation.x == mouseX && pointerLocation.y == mouseY) {
                // Check if 10 minutes has elapsed with no mouse movement
                if (elapsedTime >= 10.0f) {
                    /* Make Clock Visible if it isn't already 
                       or whatever else you want to do.  */
                    if (clockIsNonVisible) {
                        // clock.setVisible(true);
                    }
                }
            }
            else {
                mouseX = pointerLocation.x;
                mouseY = pointerLocation.y;
                timeOfLastMovement = currentTime;
                // Make clock non-visible if you like.
                if (clockIsVisible) {
                    // clock.setVisible(false);  
                }
            }

            try {
                Thread.sleep(500);
            }
            catch (InterruptedException e) {
                cancel();
                e.printStackTrace();
            }
        }
    };

    Timer monitorTimer = new Timer("Timer");

    long delay = 1000L;  // Start Delay: 1 second
    long period = 1000L; // Cycle every: 1 second
    monitorTimer.scheduleAtFixedRate(mouseMonitorTask, delay, period);
}
调用startMouseMonitoring()方法,球就会滚动。我相信你会解决剩下的问题

如果要取消TimerTask和鼠标监视,则可以调用TimerTask#cancel()方法:

mouseMonitorTask.cancel();

当然可以,但是你没有提供足够的信息。什么文件<代码>鼠标在10分钟内未移动。哪里是在应用程序上还是在整个操作系统上?或者,如果鼠标未在存储应用程序的计算机系统上移动,您是否正在谈论显示时钟?如果是后者,那么不要担心,因为您需要将应用程序作为服务运行,以便检测系统鼠标是否移动。如果没有,则使时钟可见。当鼠标再次移动时,使时钟不可见。你在想什么?对不起,我不知道我说的有多含糊,我的意思是指鼠标没有移动到整个操作系统上,而不是我的文件保护程序。但是关于“什么”的问题,除了一个用java编写的.exe文件,我真的不知道还能说什么。感谢您的回复。非常感谢您的帮助,这比我习惯的编程水平要高出很多,我将尝试将其融入其中。再次感谢你。