65.9K
CodeProject 正在变化。 阅读更多。
Home

酷炫的 Java 程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.14/5 (5投票s)

2011 年 7 月 18 日

CPOL

2分钟阅读

viewsIcon

100499

downloadIcon

1791

这些是 Java 程序,用于在不进行物理输入的情况下在计算机上进行输入、屏幕截图、自动下载器等。

引言

这包括 Java 程序,用于

  1. 在不进行物理输入的情况下在计算机上进行输入
  2. 屏幕截图
  3. 自动下载器
  4. 列出任务管理器中的所有进程
  5. 获取和设置剪贴板数据

Using the Code

1) 在不进行物理输入的情况下在计算机上进行输入

第一个程序打开一个像记事本这样的编辑器,我们的程序将在其中自动输入。这是通过

Runtime.getRuntime().exec("notepad.exe");

现在我们让我们的程序在记事本中输入。为此,我们使用 Robot

Thread.sleep(2000);
Robot r=new Robot();
r.keyPress(KeyEvent.VK_T);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_H);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_I);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_S);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_SPACE);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_I);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_S);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_SPACE);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_F);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_U);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_N);	

引入 2 秒的启动延迟,以便记事本有机会打开,并且我们的程序写入记事本而不是其他地方。

在每个字母之后,我们引入了 0.5 秒的延迟,使其看起来像有人正在输入。

2) 屏幕截图

对于这个,我们也将使用 Robot

Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot = new Robot();
BufferedImage img = robot.createScreenCapture(new Rectangle(size));
File save_path=new File("screen.jpg");
ImageIO.write(img, "JPG", save_path);	 

这里 Dimension 获取您的屏幕尺寸,并将 dimension 放入 size 变量中。createScreenCapture 函数截取屏幕截图。ImageIO.write 负责将屏幕截图写入 JPG 文件。

3) 自动下载器

这是一个使用 Java 下载文件的简单 Java 程序

System.out.println("Enter the url to download from:");
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String site = input.readLine();
System.out.println("Enter filename");
BufferedReader input1 = new BufferedReader(new InputStreamReader(System.in));
String filename = input.readLine();
java.io.BufferedInputStream in = new java.io.BufferedInputStream(new 	 
java.net.URL(site).openStream());
java.io.FileOutputStream fos = new java.io.FileOutputStream(filename);
java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
byte[] data = new byte[1024];
int i=0;
while((i=in.read(data,0,1024))>=0)
{
	bout.write(data,0,i);
}	

这里,首先需要提供要下载的文件的 URL。现在您需要指定它将保存的文件名,例如 .zip。这里 in 变量用于读取从 URL 获取的数据,然后使用 bout 将此数据写入您的系统。

4) 任务管理器进程

列出任务管理器中所有活动进程非常容易。只需使用此程序

String line;
Process p = Runtime.getRuntime().exec("tasklist.exe");
BufferedReader input =
                new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
	System.out.println(line); //<-- Parse data here.
}
input.close();

这里 tasklist.exe 为我们提供了所有正在运行的进程。我们将所有结果存储在变量 input 中,稍后将其列出到输出控制台。

5) 剪贴板详情

获取和设置剪贴板数据非常容易。这是一个示例

Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
	String text = (String)t.getTransferData(DataFlavor.stringFlavor);
	System.out.println("Current ClipBoard data is:\n"+text);
	text="I changed clipboard text";
	StringSelection ss = new StringSelection(text);
	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
	System.out.println("Changed ClipBoard data is:\n"+text);
}	

这个程序首先检索当前的剪贴板内容,显示它,然后更改它。

关注点

Robot 类也可以用来获取像素信息,甚至可以模拟鼠标点击。

Runtime.getRuntime.exec() 赋予 Java 直接执行 Windows 应用程序的能力。

剪贴板程序可以进一步增强,这可以帮助您制作一个好的桌面应用程序。

历史

  • 2011 年 7 月 17 日:初始版本
© . All rights reserved.