站锁定时移动鼠标光标(java)

时间:2011-02-27 14:52:59

标签: java mouse

我的工作站需要禁用长时间闲置。 我一直在使用一段代码将鼠标移动到屏幕上一段时间,效果非常好。

最近,我们的安全部门采用了智能卡和生物识别登录政策, 这需要我的卡在键盘内(特殊插槽)。 从那时起,麻烦就开始了。 只要我已登录,这个过程就可以正常工作,这意味着我的卡已经存在,但如果我的卡被移除则无法正常工作。 (我一直在记录进程活动,一切正常,但鼠标光标不会移动。)

有人可以建议我一种方式(或链接),以便我可以解决这个问题吗?

修改

操作系统:Windows XP

这是用于移动鼠标的代码。 请注意,我已记录其操作并对其进行了测试:结果记录条目(如同代码已运行)但鼠标光标未在锁定的会话中移动。

再次感谢

package AntiIdle;


import java.awt.*;
import java.util.Calendar;
import java.text.SimpleDateFormat;


class SimulateMouseAction implements Runnable   {

    /**
     *  Robot object used to move the mouse.
     */
    private Robot iRobot;

    /**
     *  Bed object, so thread could notify sleeping objects.
     */ 
    private Bed bed;


    /**
     *  Default constructor is neutralized.
     */
    @SuppressWarnings("unused")
    private SimulateMouseAction ()      {   }


    /**
     *  Constructs class with bed object.
     *  
     *  @param      bed     Bed object to notify the sleepers.
     *  @throws     AWTException if Robot creation fails.
     */
    public SimulateMouseAction  (Bed bed) throws AWTException   {
        this.bed = bed;
        iRobot = new Robot();
    }

    /**
     *  Activates tread.
     */
    public void run()   {
        System.out.println(new SimpleDateFormat("d/M/yy hh:mm").format(Calendar.getInstance().getTime()) +  
                "Mouse start");
        Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
        int x, y;

        for (int prcnt=0; prcnt<100; prcnt++)   {               
            x = (int) scrSize.getWidth() * prcnt / 100;         
            y = (int) scrSize.getHeight() * prcnt / 100;        
            moveMouse(x, y);
        }

        y = (int) scrSize.getHeight() - 20;                         
        for (int prcnt=100; prcnt>0; prcnt--)   {               
            x = (int) scrSize.getWidth() * prcnt / 100;         
            moveMouse(x, y);
        }

        for (int prcnt=0; prcnt<100; prcnt++)   {
            x = (int) scrSize.getWidth() * prcnt / 100;         
            y = (int) scrSize.getHeight() * (100-prcnt) / 100;  
            moveMouse(x, y);

        }
        iRobot.mouseMove((int) scrSize.getWidth()/2, (int) scrSize.getHeight()/2);
        System.out.println(new SimpleDateFormat("d/M/yy hh:mm").format(Calendar.getInstance().getTime()) + 
                "Mouse end");
        bed.awakeTheSleepers();
    }   


    /**
     *  Moves mouse cursor to given coordinates.
     *
     *  @param  x   X coordinate.
     *  @param  y   Y coordinate.
     */
    private void moveMouse(int x, int y)    {
        iRobot.mouseMove(x, y);
        try {
            Thread.sleep(10);
        } catch(InterruptedException ie)    {
                ie.printStackTrace();
        }
    }
}

修改

@Mark Peters:感谢您的反对。看起来很有趣,他们给了我这个解决方案......我已经构建了一个java应用程序,它启动了一些加载Excel并执行一些任务和创建报告的vb脚本。问题是它在我的工作站闲置一天后停止启动Excel。其他一切似乎都在工作(java应用程序一直在工作 - 我已经记录了它的活动以及上面附带代码中的鼠标移动器活动)。如您所见,您建议的安全问题无论如何都无法解决。作为我国的一项规则,我被迫每年至少连续休假一周。具有讽刺意味的是,这使我无法履行这一职责。 有什么建议吗?

0 个答案:

没有答案