Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Java funktion speicherort als argument (https://www.delphipraxis.net/159497-java-funktion-speicherort-als-argument.html)

veX 30. Mär 2011 15:46

Java funktion speicherort als argument
 
Hiho,

mir ist kein besserer Titel eingefallen :tongue:.

Folgender Java Code liegt zugrunde:

Code:
public class screenshot {

   public static void main(String[] args) throws Exception {
      Thread.sleep(150);
       BufferedImage bi = new Robot().createScreenCapture(
         new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
   
       Date dateNow = new Date ();
      
        SimpleDateFormat dateformatddMMyyyyHHmmss = new SimpleDateFormat("ddMMyyyyHHmmss");
        StringBuilder nowddMMyyyyHHmmss = new StringBuilder( dateformatddMMyyyyHHmmss.format( dateNow ) );
       ImageIO.write( bi, "jpg", new File(System.getProperty("user.home")+"/screenshot"+nowddMMyyyyHHmmss+".jpg") );
       System.exit( 0 );
   }
}
Keine Ahnung wie gut der Code ist oder so, ich arbeite nicht mit Java und habs vor sehr langer zeit nur mal kurz ausgetestet, aber er tut seinen Dienst.

Wie man sieht speichert er das jpg file immer im Home-Verzeichnes des users, ich würde nun aber gerne in Delphi folgendes machen:

Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar('screenshot.jar'), speicherort, nil, SW_SHOWNORMAL);
Also quasi den Speicherort als Parameter der jar übergeben, also Inhalt eines edit Feldes oder sowas. Könnte vielleicht ein Java-könner mir mal die Funktion so hinbiegen, dass das klappt? Kenn mich da nich aus.


Größten Dank im Voraus

Achso, es gibt natürlich einen Grund, warum ich das über Java mache und nicht über BitBlt und co. Aber der Spielt ja eigentlich keine Rolle :)

Neutral General 30. Mär 2011 16:10

AW: Java funktion speicherort als argument
 
Hallo,

Also ich hab hier kein Java aber grob sollte es so gehen:
(Hab die Variablen Namen mal übersichtlicher gemacht :?)

Code:
public class screenshot {

   public static void main(String[] args) throws Exception {
       Thread.sleep(150);
       BufferedImage bi = new Robot().createScreenCapture(
         new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );
   
       Date dateNow = new Date ();
       
       SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyyyyHHmmss");
       StringBuilder datestr = new StringBuilder(dateformat.format(dateNow));
       
       if (args.Length > 0) {
         ImageIO.write(bi, "jpg", new File(args[0]+"/screenshot"+datestr+".jpg") );
       }
       System.exit( 0 );
   }
}
Kann auch sein, dass der Parameter in args[1] steht (so wäre es bei Delphi!).
Ggf. musst du dann überprüfen ob args.Length > 1 und dann args[1] übergeben.

Gruß
Neutral General

veX 30. Mär 2011 17:25

AW: Java funktion speicherort als argument
 
mit 0 klappts ;)

Großen Dank Herr General!!! :) :cheers:

Ich glaube ich muss Java vielleicht doch nochmal ne Chance geben ...

shmia 30. Mär 2011 17:39

AW: Java funktion speicherort als argument
 
Nur zur Info:
JPEG ist ein denkbar ungünstiges Datenformat für einen Screenshot, denn es benützt verlustbehaftete Komprimierung.
Dadurch werden feine Strukturen (Schriften, dünne Linien) unscharf und verwaschen.
Empfehlenswert ist PNG oder falls 256 Farben ausreichend sind GIF.

veX 30. Mär 2011 20:14

AW: Java funktion speicherort als argument
 
das ist bekannt, ich hab aber noch nie probleme bei jpgs gehabt (100er qualli), reicht für ottonormal screens vollkommen aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz