当前位置: 首页 > 知识库问答 >
问题:

java(Javacv?)中DirectX程序的全屏截图

夏星阑
2023-03-14

[For Windows]我知道可以捕获在C#语言下运行的DirectX程序的屏幕,但您知道一些Java示例代码吗?

我实际上面临着同样的问题比这拿全屏应用程序与java内部的屏幕截图?。机器人课没有帮助,也没有效果。

但我在互联网上没有找到任何与此相关的java代码样本。感谢您在这个话题上提供的帮助。

共有1个答案

燕照
2023-03-14

由于我对它的工作更多,另请参阅:

import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import javax.swing.*;

import javax.imageio.ImageIO;
import java.io.File;

public class ClipboardScreenshot {

    public static void main(String[] args) throws Exception {
        // get the screenshot
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_PRINTSCREEN);
        robot.delay(40);
        robot.keyRelease(KeyEvent.VK_PRINTSCREEN);
        robot.delay(404);

        Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
        DataFlavor[] flavors = cb.getAvailableDataFlavors();
        System.out.println("After: ");
        for (DataFlavor flavor : flavors) {
            System.out.println(flavor);
            if (flavor.toString().indexOf("java.awt.Image")>0) {
                Object o = cb.getData(flavor);
                Image i = (Image)o;
                // ImageIO will not write an Image
                // It will write a BufferedImage (a type of RenderedImage)
                BufferedImage bi = new BufferedImage(
                        i.getWidth(null),
                        i.getHeight(null),
                        BufferedImage.TYPE_INT_RGB);
                Graphics2D g = bi.createGraphics();
                g.drawImage(i, 0, 0, null);
                g.dispose();

                JScrollPane sp = new JScrollPane(new JLabel(new ImageIcon(bi)));
                sp.setPreferredSize(new Dimension(800,600));
                JOptionPane.showMessageDialog(null, sp);
                File f = new File(
                        System.getProperty("user.home") + 
                        File.separator + 
                        "the.png");
                ImageIO.write(bi, "png", f);
            }
        }
    }
}
 类似资料:
  • 我正试图用java设计一个程序,定期(每100毫秒左右)拍摄我的屏幕截图,并计算整个屏幕的平均像素rgb值。我需要这个来处理视频游戏和iTunes/Quicktime视频。然而,我曾尝试使用JNA和robot来捕获屏幕,它只在我没有捕获全屏或iTunes视频的视频游戏时起作用。例如,我通过保存一个图像来测试代码,以检查并查看发生了什么。当我玩电子游戏时,我只看到一个空白窗口的截图。我认为这是因为游

  • 我使用的是使用Java机器人类截屏的标准方法,即: 这在大多数情况下都可以正常工作,但它只是在全屏应用程序中拍摄一个空白屏幕的照片(我使用的是Windows 7,所以大多数应用程序都使用Direct X全屏)。这是机器人类的已知问题还是我做错了什么?

  • 问题内容: 有没有一种方法可以捕获屏幕,但不会显示应用程序本身。我知道如何最小化框架或使框架不可见,但这必须要做到真正的快速cos,因为它每秒会发生很多次(至少每秒发生一次)。我希望它看起来像Windows Vista / 7中的放大镜。(该应用可以看到自己的背后。) 问题答案: 如果不与相关平台的窗口管理器进行紧密的本机集成,则在Java中这是不可能的。

  • 我想让应用程序像“简易屏幕录制器”。我必须从哪里开始,因为我搜索了很多,但没有找到任何开始的链接。有任何用于创建屏幕录制器的api,而不是屏幕截图。我不想使用javacv从屏幕截图创建视频。我只想让用户启动应用程序,点击开始录制按钮,然后用户在手机上所做的一切来录制这些内容。 1) Android系统中是否有相关的api。 2) 如何在android中创建屏幕录制器应用程序。 3)是没有任何api

  • 函数功能:全屏截图返回图片对象 函数方法 img = image.snapshot() 返回值 类型 说明 img userdata/nil 截取后的图片对象,失败返回 nil 函数用例 img = image.snapshot() if img ~= nil then dialog("成功",5000) else dialog("失败",5000) end 注意事项 目前积木编

  • 我试着用java selenium web驱动程序中的TakeScreenshot来截屏。当我在页面中使用scrollTo(x, y)滚动特定数量时,TakeScreenshot方法会给我屏幕截图第一个视口,而不是滚动后到达的视口。 我想知道TakeScreenshot方法是给出OperaWebDriver中第一个视口的屏幕截图还是当前视口的屏幕截图。在chrome中,它拍摄了当前网络驱动程序的屏