Bildschirmänderung abfangen?

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo,
Weiß jemand wie man in einem Java Programm herausfinden kann
wenn sich der Bildschirm ändert, z.B wenn ein neues Fenster aufgeht??

Danke schonmal.
 
G

Gast

Gast
Naja dachte mir auf umwegen, wollte ein Screenshot machen und ne Sekunde, oder auch anders, nen zweiten
Screenshot machen. Und dann die Bilder vergleichen.

Vielleicht so, läuft aber nit gescheit.
Code:
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.util.RandomAccess;

import javax.imageio.ImageIO;

public class Start implements Runnable{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		System.out.println("Start");
		Start start = new Start();
		Thread thread = new Thread(start);
		thread.start();

	}

	public void run() 
	{
		try {
			Toolkit toolkit = Toolkit.getDefaultToolkit();
			Dimension screenSize = toolkit.getScreenSize();
			Rectangle rectangle = new Rectangle(0, 0, 
			                                    screenSize.width, 
			                                    screenSize.height);
			Robot robot = new Robot();
			
			while(1==1)
			{			
					byte[] tmp = new byte[50000];
					byte[] tmp2 = new byte[50000];
					BufferedImage buffimg = robot.createScreenCapture(rectangle);
					ImageIO.write(buffimg, "jpg", new File("d:\\data\\bild.jpg"));
					Thread.sleep(100);
					ImageIO.write(buffimg, "jpg", new File("d:\\data\\bild2.jpg"));
					RandomAccessFile rafile = new RandomAccessFile(new File("d:\\bild.jpg"),"r");
					RandomAccessFile rafile2 = new RandomAccessFile(new File("d:\\bild2.jpg"),"r");
					rafile.readFully(tmp);					
					rafile2.readFully(tmp2);
					
					
					if(new String(tmp).equals(new String(tmp2)))
						System.out.println("gleich");
					else
						System.out.println("geändert");
			}
		
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}
 

The_S

Top Contributor
Naja, so gehts natürlich (wenn dir das genügt), beachte aber, dass dir so auch z. B. eine Fensterverschiebung oder ein veränderter Text als "Veränderung" angezeigt wird.

Warum hältst du nicht beide Images im Speicher und vergleichst direkt mit equals? Nach dem Vergleich wird dann das alte image durch das neue ersetzt und nach x-sekunden ein neues bild gemacht ...
 
G

Gast

Gast
Ja haste recht ist natürlich sinniger die im Speicher zu vergleichen. Wollte das aber später auch als so
ne Art Desktop.log einsetzen. Danke nochmal.
Hier der Code nochmal ohne Fehler.

Code:
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.util.RandomAccess;

import javax.imageio.ImageIO;

public class Start implements Runnable{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		System.out.println("Start");
		Start start = new Start();
		Thread thread = new Thread(start);
		thread.start();

	}

	public void run() 
	{
		try {
			Toolkit toolkit = Toolkit.getDefaultToolkit();
			Dimension screenSize = toolkit.getScreenSize();
			Rectangle rectangle = new Rectangle(0, 0, 
			                                    screenSize.width, 
			                                    screenSize.height);
			Robot robot = new Robot();
			
			while(1==1)
			{			
					byte[] tmp = new byte[50000];
					byte[] tmp2 = new byte[50000];
					BufferedImage buffimg = robot.createScreenCapture(rectangle);
					ImageIO.write(buffimg, "jpg", new File("d:\\data\\bild.jpg"));
					Thread.sleep(1000);
					BufferedImage buffimg2 = robot.createScreenCapture(rectangle);
					ImageIO.write(buffimg2, "jpg", new File("d:\\data\\bild2.jpg"));
					RandomAccessFile rafile = new RandomAccessFile(new File("d:\\bild.jpg"),"r");
					RandomAccessFile rafile2 = new RandomAccessFile(new File("d:\\bild2.jpg"),"r");
					rafile.readFully(tmp);					
					rafile2.readFully(tmp2);
					
					if(new String(tmp).equals(new String(tmp2)))
						System.out.println("gleich");
					else
						System.out.println("geändert");
			}
		
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
CodingBerlin Mouse Clicks abfangen Allgemeine Java-Themen 4
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
S equals-Methode bestimmer Klassen abfangen Allgemeine Java-Themen 2
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
M Swing java command line abfangen Allgemeine Java-Themen 8
C Swing Abfangen von Fehlern in GUI Allgemeine Java-Themen 4
R Threads Exceptions von Threads abfangen im ThreadPool Allgemeine Java-Themen 5
C Kopiervorgang abfangen Allgemeine Java-Themen 10
T Methoden In Konsole tasten abfangen? Allgemeine Java-Themen 4
B Windows Shutdown abfangen Allgemeine Java-Themen 10
O Input/Output CMD-Ausgabe abfangen und in Datei speichern Allgemeine Java-Themen 8
D Nullpointer abfangen Allgemeine Java-Themen 7
V JNI Call Crash verhindern (abfangen) Allgemeine Java-Themen 2
E JAVA URL abfangen und weiterleiten? Filter? Allgemeine Java-Themen 6
F Alle Exceptions abfangen Allgemeine Java-Themen 4
reibi NoClassDefFoundError abfangen Allgemeine Java-Themen 6
N BlueJ Abfangen vom Beenden Allgemeine Java-Themen 7
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
B Exception wird geworfen, ich darf sie aber nicht abfangen. Allgemeine Java-Themen 10
P [SWT] Copy, Paste und Cut abfangen Allgemeine Java-Themen 6
T WeakHashMap: Wie "null" effizient abfangen? Allgemeine Java-Themen 5
R Loading-Thread und Exceptions abfangen. Allgemeine Java-Themen 4
G Tastatursignale abfangen oder ist Java dafuer zu abstrakt? Allgemeine Java-Themen 12
I Das EOF (Ctrl + Z) abfangen Allgemeine Java-Themen 8
E programm im background tastendruck abfangen Allgemeine Java-Themen 4
H NullPointerException trotz Abfangen von null? Allgemeine Java-Themen 9
M Speichern von Word als Event abfangen Allgemeine Java-Themen 7
W Das schließen des JFrame abfangen, wiei? Allgemeine Java-Themen 6
P Nicht terminierende Methoden abfangen - timeout ? Allgemeine Java-Themen 3
reibi Aktion Taste gedrückt abfangen Allgemeine Java-Themen 9
J Method.invoke -> Exceptions der Funktion abfangen Allgemeine Java-Themen 5
B Fehlermeldung von dispatcher.forward abfangen Allgemeine Java-Themen 2
P CLAmp-Ausgaben abfangen Allgemeine Java-Themen 2
H Programmterminierung abfangen Allgemeine Java-Themen 4
R Alle Konsolenausgaben abfangen Allgemeine Java-Themen 8
G outOfMemoryError beim Einlesen einer Datei abfangen? Allgemeine Java-Themen 13
F Überlauf abfangen Allgemeine Java-Themen 1
J ToolTipText Event abfangen Allgemeine Java-Themen 5
M unterschiedliche Betriebssysteme abfangen Allgemeine Java-Themen 3
C LinkedList Exception abfangen Allgemeine Java-Themen 8
0 StackOverflow abfangen Allgemeine Java-Themen 15
M Runtime.getRuntime().exec() - Fehler abfangen Allgemeine Java-Themen 5
L Tastatureingaben abfangen Allgemeine Java-Themen 6
M err oder alle Exceptions eines Programms abfangen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben