我的工作站需要禁用长时间闲置。 我一直在使用一段代码将鼠标移动到屏幕上一段时间,效果非常好。
最近,我们的安全部门采用了智能卡和生物识别登录政策, 这需要我的卡在键盘内(特殊插槽)。 从那时起,麻烦就开始了。 只要我已登录,这个过程就可以正常工作,这意味着我的卡已经存在,但如果我的卡被移除则无法正常工作。 (我一直在记录进程活动,一切正常,但鼠标光标不会移动。)
有人可以建议我一种方式(或链接),以便我可以解决这个问题吗?
修改
操作系统: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应用程序一直在工作 - 我已经记录了它的活动以及上面附带代码中的鼠标移动器活动)。如您所见,您建议的安全问题无论如何都无法解决。作为我国的一项规则,我被迫每年至少连续休假一周。具有讽刺意味的是,这使我无法履行这一职责。 有什么建议吗?