Screenshot erstellen ohne die eigene Anwendung?

Loki2

Erfahrenes Mitglied
Hallo

In meinem Programm gibt es eine Screenshotfunktion. Diese funktioniert auch wunderbar und macht ganz tolle Screenshots. Das Problem ist, das meine Anwendung selbst auch mit auf dem Screenshot ist. Das soll aber nicht. Wie kann ich das verhindern?
Kann ich das so machen das, wenn man auf den Button für den Screenshot klickt, sich meine Anwendung minimiert, der Screenshot ausgeführt wird und die Anwendung dann wieder hoch kommt oder wie funktioniert sowas bzw. wie kann ich meine Anwendung minimieren/wieder anzeigen?

Absolut genial wäre natürlich auch eine Screenshotfunktion ähnlich wie man sie aus Paint Shop Pro kennt aber da habe ich überhaupt kein Plan von wie man diese umsetzen könnte :confused:

Ich hoffe ihr könnt mir mit dem richtigen Hinweis weiterhelfen.

Gruß und so
Loki2
 
Servus.

Ich glaube einen screenshot zu machen, der "hinter" deiner Anwendung geschossen wird, wird wohl nicht möglich sein.
Da wirst du bestimmt die Anwendung irgendiwe aus dem Bild kriegen müssen. Schick sie doch "down to Tray" und fang
denn einen vorher definierten ShortCut ab, und mach so dein Foto ;-) .

Aber mich würde interessieren wie du den screenshot machst. Kannst du mir da vielleicht ein paar Tipps geben, wie man da rangeht?
 
Nimm doch ein richtiges Screenshot Prog, gibts auch gratis, dann ist deine Anwendung nicht auf dem Bild!

Vielleicht, funktionierts auch so: Programm -> down to tray -> Strg + ?für Screenshot
was ich meine, vielleicht unterstützt dein Programm Shortcuts, also leg dein Programm in die Taskleiste, und drück dann die Shortcut.

Strg + N : minimiert alle Fenster

FS Screen Capture, ist so ein Screenshot prog, glaub ich sogar gratis

lg
 
Zuletzt bearbeitet:
Schreib ich doch!?
Aber ich glaube nicht, dass er ein Prog sucht, das das kann, sondern sein eigenes soll das können.
 
Hi,

erstmal danke für die Antworten.

Ein zusätzliches Tool bringt mir leider gar nichts und mit Shortcuts kann ich in dem Programm wohl leider auch nicht arbeiten, das muss schon über einen Button laufen der alles nötige erledigt.

Den Screenshot erstelle ich so:

Code:
  public void makeScreenShot(String outFileName){
      
      // determine current screen size
      Toolkit toolkit = Toolkit.getDefaultToolkit();
      Dimension screenSize = toolkit.getScreenSize();
      Rectangle screenRect = new Rectangle(screenSize);
      
      // create screen shot
      Robot robot = null;
      try {
          robot = new Robot();
      } catch (AWTException e1) {
          e1.printStackTrace();
      }
      BufferedImage image = robot.createScreenCapture(screenRect);
      
      // save captured image to PNG file
      try {
          ImageIO.write(image, "png", new File(outFileName));
      } catch (IOException e1) {
          e1.printStackTrace();
      }

      // give feedback
      System.out.println("Saved screen shot (" + image.getWidth() +
          " x " + image.getHeight() + " pixels) to file \"" +
          outFileName + "\".");      
  }
Gruß und so
Loki2
 
Hallo!

Code:
/**
 * 
 */
package de.tutorials;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;

/**
 * @author daritho
 * 
 */
public class ScreenShotExample extends JFrame {

    Robot robot;

    public ScreenShotExample() {
        super("ScreenShotExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        JButton btnScreenShot = new JButton("Capture screen");
        btnScreenShot.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                ScreenShotExample.this.setVisible(false);
                BufferedImage bufferedImage = robot
                        .createScreenCapture(new Rectangle(Toolkit
                                .getDefaultToolkit().getScreenSize()));
                try {
                    ImageIO.write(bufferedImage, "jpeg", new File(
                            "c:/screenCapture.jpg"));
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                ScreenShotExample.this.setVisible(true);
            }
        });
        add(btnScreenShot);

        try {
            robot = new Robot();
        } catch (AWTException e1) {
            e1.printStackTrace();
        }

        pack();
        setVisible(true);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new ScreenShotExample();
    }

}

Gruss Tom
 
Moin Zusammen,

Hab gesehen das Thomas im Grunde dasgleiche macht :)

Code:
public void actionPerformed(java.awt.event.ActionEvent arg0) 
			{
				frame.setVisible(false);
				makeScreenShot("C:/test.png");
				frame.setVisible(true);
			}

Mfg
Dom
 
Zuletzt bearbeitet:
Wie geht man eigentlich an die Sache ran, wenn es darum geht nicht nur ein Bild sondern ganze Filmsequenzen vom Desktop auf zu nehmen.?
Würde man dann immernoch einzelne Bilder schießen, und diese dann zu nem Film zusammenschuhstern? Und ausserdem...Geht das überhaupt?
Oder gibt es schon eine etwas bequemere Art seinen Desktop zu "filmen"?
Das ganze sollte natürlich auch noch gehen, wenn man in einem Spiel, oder ähnlichen ist.:eek:
 
Hallo,

vielen Dank, ich habe es jetzt.

Funktioniert super mit

setVisible(false);
setVisible(true);

Gruß und so
Loki2
 

Neue Beiträge

Zurück