使用java,借助Robot这个类可以实现软件截屏,代码如下:
package test; import java.awt.AWTException; import java.awt.DisplayMode; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.Rectangle; import java.awt.Robot; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; import javax.imageio.ImageIO; public class TestRobot { private static Robot bt; private static GraphicsDevice gd; static { GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); gd = gs[0]; try { bt = new Robot(gd); } catch (AWTException e) { e.printStackTrace(); } } public static void test1() { try { DisplayMode mode = gd.getDisplayMode(); int width = mode.getWidth(); int height = mode.getHeight(); System.out.println(width + "x" + height); BufferedImage img = bt.createScreenCapture(new Rectangle(width, height)); Date date = new Date(); //下边的路径用于保存截屏图片的路径和名字 FileOutputStream fos = new FileOutputStream("/home/qcq/" + date.getTime() + ".jpg"); ImageIO.write(img, "jpeg", fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { SystemTray tray = SystemTray.getSystemTray();//create the tray try { //此处需要给定托盘的图标。 Image image = ImageIO.read(new File("src/1.jpg")); PopupMenu menu = new PopupMenu(); MenuItem m1 = new MenuItem("截屏"); MenuItem m0 = new MenuItem("退出"); menu.add(m1); menu.add(m0); TrayIcon trayIcon = new TrayIcon(image, "截屏", menu); tray.add(trayIcon); m1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { test1(); } }); m0.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //自动按下键盘显示桌面(Windows)。linux失效,可以用来截取桌面。 bt.keyPress(KeyEvent.VK_WINDOWS); bt.keyPress(KeyEvent.VK_D); bt.keyRelease(KeyEvent.VK_WINDOWS); bt.keyRelease(KeyEvent.VK_D); } catch (IOException e) { e.printStackTrace(); } catch (AWTException e) { e.printStackTrace(); } } }
原文地址:http://blog.csdn.net/u011233383/article/details/42427895