# Applet soll Screenshot machen



## fortune (20. Jul 2007)

Hallo, also mein Problem ist folgendes, ich habe ein programm, welches Screenshots vom Bildschirm macht. Alles funktioniert soweit super, speicherts ab schreibt nen Log dazu, alles Super aber sobald ich dass Programm in ein Applet schreiben möchte funktioniert es nicht mehr. Er speichert keine Screenshots mehr ab. Was müsste ich da ändern?


```
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import com.sun.image.codec.jpeg.JPEGCodec;
import java.awt.image.BufferedImage;
import java.io.*;
import java.applet.*;
import java.text.*;
import java.util.*;
import java.lang.String.*;
import java.*;

public class a6 extends Applet 
  {


   public void main( String args[] ) throws Exception
    {
    	
    int screen;
  	String status ="1";
  	
  final String[] KEYS = { "user.name", "user.language", "user.home",
                            "os.name", "java.version" };
    Vector vec = new Vector();
    String s;

    // Lies Textzeilen aus der Datei in einen Vector:
    try {
      BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                          new FileInputStream( "Log.txt" ) ) );
      while( null != (s = in.readLine()) ) {
        vec.add( s );
      }
      in.close();
    } catch( FileNotFoundException ex ) {
    } catch( Exception ex ) {
      System.out.println( ex );
    }

    // Falls es keine Datei gab, erzeuge Einträge im Vector:
    if( 0 >= vec.size() ) {
      for( int i=0; i<KEYS.length; i++ ) {
        vec.add( KEYS[i] + " = " + System.getProperty( KEYS[i] ) );
      }
    }
    
    	String add1 = new SimpleDateFormat(
                         "yyyy-MM-dd__HH.mm.ss,SSS" ).format( new Date() );
                         
    vec.add( "Screenshot taken: " + add1 +"");

    
    
        try {
      BufferedWriter out1 = new BufferedWriter(
                           new OutputStreamWriter(
                           new FileOutputStream( "Log.txt" ) ) );
      for( int i=0; i<vec.size(); i++ ) {
        s = vec.get( i ).toString();
        System.out.println( s );
        out1.write( s, 0, s.length() );
        out1.newLine();
      }
      out1.close();
    } catch( IOException ex ) {
      System.out.println( ex );
    }	
    

    }



  }
```

Das ist der Code, der nur den log erstellt, aber nichtmal das funst  Ich bin mir sicher dass es nur ein kleiner schusseligkeitsfehler ist, es sei denn ihr sagt mir dass ein Applet keine Dateien abspeichern kann 

Danke schonmal im Vorraus, MfG

fortune


----------



## Wildcard (20. Jul 2007)

Ein Applet kann nicht einfach auf den Client Rechner schreiben, dazu müsste es schon signiert sein.


----------



## fortune (20. Jul 2007)

Wie kann ich ein Applet signieren?


----------



## Wildcard (20. Jul 2007)

-> FAQ


----------



## Gast (20. Jul 2007)

Heisßen dank!

Für alle die zu fual sind ins FAQ zu gehen:

http://www.java-forum.org/de/viewtopic.php?t=18083

thx nochmal!


----------



## fortune (20. Jul 2007)

hmm signiert is es zwar, und jeder benutzer muss das applet annehmen, aber screens machen tuts trotzdem nicht, weder auf dem Server noch Lokal. Server ordner natuerlich zum test chmod 777.

Jmd ne idee wieso er das bei dem Applet nicht macht?


----------



## L-ectron-X (21. Jul 2007)

Vielleicht wird ein Screenshot zwar erstellt, aber an einem Ort oder mit einem Dateinamen/-format, den du verkehrt angegeben hast. Und auf den Server kannst du mit einem Applet nicht ohne weiteres ein Bild ablegen, auch wenn in dem Verzeichnis die Schreibrechte freigegeben wurden.

Edit: Ein Applet hat keine main()-Methode.


----------



## fortune (26. Jul 2007)

wenn ichn dass applet als normales Java Programm Starte macht er die Screenshots. Er speichert sie alle richtig ab. Sobald ich exact das selbe Programm (halt so dasse s als Applet funst) starte passiert NICHTS... vllt mach ich auch was mit der signierung falsch, aber zumindest muss jeder user dass Applet annehmen.


----------



## L-ectron-X (26. Jul 2007)

fortune hat gesagt.:
			
		

> vllt mach ich auch was mit der signierung falsch


Kann ich mir nicht vorstellen. Du hast da ein Grundsatzproblem im Applet-Code!


----------



## fortune (27. Jul 2007)

Es folgt mein Code, ich habe schon leute aus meinem Kurs befragt, aber keiner sieht nen Fehler. Ihc bekomme auch keinen ausgegeben, weder beim compilieren noch beim ausführen. Auch nicht wenn ichs als consolen anwendung ausführe. Dann funktioniert ja sogar alles wie es soll.

Muesste also ein Fehler beim Applet sein. Aber WO?

Danke schonmal dass ihr mir bis hier her geholfen habt 


```
import com.sun.image.codec.jpeg.JPEGCodec;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.awt.*;
import java.text.*;
import java.util.*;
import java.lang.String.*;
import java.applet.*;
//import javax.imageio.ImageIO;

public class Screenshotapplet extends Applet
{
	


	
  public static void main(String args[]) throws Exception
  {
  	int screen;
  	String status1 ="1";
  	int eslid = 111;
  	String eslnick = "hexagon";
  	
 		
  		String date1 = new SimpleDateFormat(
                         "yyyy-MM-dd HH:mm:ss,SSS" ).format( new Date() );



     final String[] KEYS = { "user.name", "user.language", "user.home",
                            "os.name", "java.version"};
     

    Vector vec = new Vector();
    String s;
  

    // Lies Textzeilen aus der Datei in einen Vector:
    try {
      BufferedReader in = new BufferedReader(
                          new InputStreamReader(
                          new FileInputStream( "archiv/Log.txt" ) ) );
      while( null != (s = in.readLine()) ) {
        vec.add( s );
      }
      in.close();
    } catch( FileNotFoundException ex ) {
    } catch( Exception ex ) {
      System.out.println( ex );
    }

    // Falls es keine Datei gab, erzeuge Einträge im Vector:
    if( 0 >= vec.size() ) {
      for( int i=0; i<KEYS.length; i++ ) {
        vec.add( KEYS[i] + " = " + System.getProperty( KEYS[i] ) );
      }
    }
    
    
  	// SCREENSHOT

  		 
  	double screeny = Math.random() * 50000;
  		 
  	if (screeny < 0.1)
  	{
  	String add1 = new SimpleDateFormat(
                         "yyyy-MM-dd__HH.mm.ss,SSS" ).format( new Date() );
    String add2 = new SimpleDateFormat(
                         "HH:mm:ss" ).format( new Date() );
  		 
    Thread.sleep( 2000 );

    BufferedImage bi = new Robot().createScreenCapture(
      new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
 
    

                         
    OutputStream  out  = new FileOutputStream( "archiv/screenshot" + add1 + ".jpg" );
    // Füge weiteren Eintrag in den LOG hinzu:

    vec.add( "[" + add2 + "] Screenshot taken: " + add1 +"");
    vec.add( "[" + add2 + "] ScreenLOG:        " + screeny +"");
    JPEGCodec.createJPEGEncoder( out ).encode( bi );
    out.close();



    // Schreibe alle Elemente als Textzeilen in die Datei:
    try {
      BufferedWriter out1 = new BufferedWriter(
                           new OutputStreamWriter(
                           new FileOutputStream( "archiv/Log.txt" ) ) );
      for( int i=0; i<vec.size(); i++ ) {

        s = vec.get( i ).toString();
        //System.out.println( s );
        out1.write( s, 0, s.length() );
     //   out1.write();

        out1.newLine();
      }
      out1.close();
    } catch( IOException ex ) {
      System.out.println( ex );
    }
}
}
   
     } // ENDE VON auswahl 1
```


----------



## L-ectron-X (27. Jul 2007)

fortune hat gesagt.:
			
		

> Es folgt mein Code, ich habe schon leute aus meinem Kurs befragt, aber keiner sieht nen Fehler.





			
				L-ectron-X hat gesagt.:
			
		

> Kann ich mir nicht vorstellen. Du hast ein Grundsatzproblem im Applet-Code.


Der erste Fehler: Applets haben keine main()-Methode, sie haben eine init()-Methode!
...und es gibt noch weitere, das hättest du bemerkt, wenn du deinen Code mal kompilieren würdest.


----------



## fortune (27. Jul 2007)

aber ich kann den code compilieren. Ich nutze JOE, und er sagt mir keinen fehler. Ist vielleicht ein wenig unverschämt, aber koenntest du mir bei der Fehlersuche helfen? Ich hab in X Java foren gepostet und niemand hat mir bisher so geholfen wie hier.

MfG 

fortune


----------



## doctus (27. Jul 2007)

vielleicht solltest du erstmal wissen, wie man ein applet aufbaut. 

http://www.galileocomputing.de/open...19_001.htm#mj3bcc6cda9a703fa621f579cd09ff9828

wenn man den gesammten code eines applets in eine main methode schreibt, die es eigendlich nicht geben dürfte, sollte man erstmal mit etwas grundlektüre anfange...


----------



## fortune (29. Jul 2007)

java coden kann ich ja eigentlich, aber is halt das erste mal dass ich mich an applets rantrau


----------



## fortune (29. Jul 2007)

Ach ja, DANKE für die Page, is echt nice. Sollte ich nochma ne frage haben, werdet ihr mich wieder hier finden


----------

