Applet soll Screenshot machen

  • Themenstarter Themenstarter fortune
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
F

fortune

Gast
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?

Code:
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
 
Ein Applet kann nicht einfach auf den Client Rechner schreiben, dazu müsste es schon signiert sein.
 
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?
 
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.
 
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.
 
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 🙂

Code:
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
 
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.
 
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
 
java coden kann ich ja eigentlich, aber is halt das erste mal dass ich mich an applets rantrau 🙂
 
Ach ja, DANKE für die Page, is echt nice. Sollte ich nochma ne frage haben, werdet ihr mich wieder hier finden 😛
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben