in Autostart schreiben?

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi,

brauche dann noch mal kurz ein kleine Hilfe. Der Weg zum Ziel ist mir klar, aber ich weiß nicht wie ich ihn realisieren soll. Möchte, dass mein Programm an einer bestimmten Stelle (die sich vielleicht auch ändern soll) einen neu Start durchführt und danch an der unterbrochenen Stelle weiter macht.

Jetzt die Fragen:

1. Wie kann ich etwas in den Autostart schreiben?
2. Vielleicht noch wichtiger, wie kann ich festhalten wo mein Programm gerade war?
3. Wie kann ich, meine Datei dann wenn mein Programm beendet wird aus dem Autostart entfernen?

Danke für eure Hilfe!

Gruß
timkon
 

JPKI

Top Contributor
1.) Wenn dein Programm in einer handlichen JAR-Datei steckt:

Code:
Runtime.getRuntime().exec("copy \"" + dateinameDerJarDatei + "\" \"%userprofile%\\Startmenü\\Autostart\"");

2.) Serialisieren (java.io_ObjectOutputStream/ObjectInputStream)

3.) Wenn dein Programm immer noch in besagter JAR-Datei steckt:

Code:
Runtime.getRuntime().exec("del \"%userprofile%\\Startmenü\\Autostart\\" + dateinameDerJarDatei + "\");
 

mobile

Bekanntes Mitglied
danke erstmal,

jetzt mal langsam.

ich starte mein Programm, jetzt läuft nen Programm, in meinem Quelltext setze ich jetzt nach der Ausführung des Programms den 1. Schritt.

Dann startet der PC neu.Und mein Programm öffnet sich. Schritt 2 habe ich nicht ganz verstanden? Wie und wo soll ich das machen?

Schritt 3 ist dann klar es wird wieder gelöscht.

Habe ich das so weit richtig verstanden?
 

mobile

Bekanntes Mitglied
Also bei mir soll an dieser Stelle nen neustart gemacht werden und da soll dann auch weiter gemacht werden.

Code:
//....
Process p4 = Runtime.getRuntime().exec("C:\\Programme\\YooApplications\\Sweepi\\Sweepi.exe");
Runtime.getRuntime().exec("copy \"" + cAs.jar + "\" \"%userprofile%\\Startmenü\\Autostart\"");
//Hier soll weiter gemacht werden
Runtime.getRuntime().exec("del \"%userprofile%\\Startmenü\\Autostart\\" + cAs.jar + "\");

System.out.println("Sweepi, erfolgreich ausgefuehrt...\n");			
System.out.println("Aufgaben wurden erfolgreich ausgefuehrt!\n\n");

Aber irgendwie funktioniert das mit dem Dateinamen der .jar noch nicht!

Achja, das Ganze läuft ja in der Konsole, ist es auch möglich, den schon eingegebenen Text nach dem Neustart wieder in der KOnsole zu habe?

Danke!
 

JPKI

Top Contributor
Mensch, guck dir doch mal die Sun API an...
Ich will mal nicht so sein:

Serialisieren heisst, du speicherst den momentanen Status eines Objektes mitsamt allen Referenzen. Deserialisieren wär das genaue Gegenteil. Angenommen dein Programm ist ein Objekt der Klasse "Neustarter". Dann geht das so:

Code:
//Serialisieren
ObjectOutputStream objstr = new ObjectOutputStream(new FileOutputStream("dateiname.ser"));
objstr.writeObject(ns); //ns ist das "Neustarter"-Objekt

//Deserialisieren
ObjectInputStream objinstr = new ObjectInputStream(newFileInputStream("dateiname.ser"));
Neustarter ns = (Neustarter) objinstr.readObject();

ns... //Hier wie gewohnt weiter machen...

Kleine Anmerkung(en):

- Exceptions müssen abgefangen werden
- Deine Klasse muss java.io.Serializable implementieren, damit es überhaupt geht*
- Ich hab das schon lange nicht mehr gemacht, d.h. ich übernehme keinerlei Garantie für die Korrektheit des Codes!

*Wenn deine Klasse von java.awt.Component erbt, ist es unnötig, nochmal Serializable zu implementieren, da dies schon durch Component geschehen ist. Also sind (fast) alle GUI-Komponenten ohne weiteres serialisierbar...

[Edit]Das mit dem Konsolentext wird wohl nicht gehen, es sei denn, du gibst ihn nochmal neu aus...[/Edit]
 

mobile

Bekanntes Mitglied
ja kenne mich noch nicht so aus. Mach das noch nciht lange. Sieht bis jetzt so aus:

Code:
Runtime.getRuntime().exec("copy \"" + cAs.jar + "\" \"%userprofile%\\Startmenü\\Autostart\"");
			
//Serialisieren
ObjectOutputStream objstr = new ObjectOutputStream(new FileOutputStream("dateiname.ser"));
objstr.writeObject(ns); //ns ist das "Neustarter"-Objekt

//Deserialisieren
ObjectInputStream objinstr = new ObjectInputStream(new FileInputStream("dateiname.ser"));
Aktiv ns = (Aktiv) objinstr.readObject();

//Hier soll dann weiter gemacht werden
Runtime.getRuntime().exec("del \"%userprofile%\\Startmenü\\Autostart\\" + cAs.jar + "\"");

Aber bei
Code:
objstr.writeObject(ns); //ns ist das "Neustarter"-Objekt

meckert Eclipse wegen ns!

Und bei der Datei cAs.jar gibts auch Probleme.
 

JPKI

Top Contributor
Muss man dir denn wirlich die Zunge von rechts nach links legen???

Die Klasse mit main()-Methode:

Code:
public class Starter {

  public static void main(String args[]) {

   Aktiv ac;

   try {

   ObjectInputStream in = new ObjectInputStream(new FileInputStream("dateiname.ser"));

   ac = (Aktiv) in.readObject();
   in.close();
   ac.wasNachDemNeustartGeschehenSoll();

        } catch (Exception ex) {

   ac = new Aktiv();
   ac.wasVorDemNeustartGeschehenSoll();

   ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("dateiname.ser"));
   out.writeObject(ac);
   out.close();

     }
 }
}

Die Klasse "Aktiv":

Code:
public class Aktiv implements java.io.Serializable {

  public Aktiv() {
 }

  public void wasVorDemNeustartGeschehenSoll() {

  //Was du halt machen willst
}

  public void wasNachDemNeustartGeschehenSoll() {

  //Was du halt danach machen willst
}
}
 

mobile

Bekanntes Mitglied
was regste dich denn so auf???
Denke das is nen Forum wo man HIlfe sucht und meist auch welche bekommt. Kann ja für meine Dummheit nichts. Sorry!

Trotzdem danke!
 

JPKI

Top Contributor
'tschuldigung, wenn ich mich zu sehr aufgeregt hab... War keine Absicht! Funktioniert's denn jetzt mit dem Code und der JAR-Datei?
 

mobile

Bekanntes Mitglied
So ich habe es jetzt so gemacht...

Code:
//Serialisieren
ObjectOutputStream objstr = new ObjectOutputStream(new FileOutputStream("restart.ser"));
Aktiv ns;
objstr.writeObject(ns); 

//Deserialisieren
ObjectInputStream objinstr = new ObjectInputStream(new FileInputStream("restart.ser"));
Aktiv nr = (Aktiv) objinstr.readObject();

Aber diese Befehle sind immer noch falsch. Wie muss es denn richtig lauten?

Code:
Runtime.getRuntime().exec("copy \"" + cAs.jar + "\" \"%userprofile%\\Startmenü\\Autostart\"");
Runtime.getRuntime().exec("del \"%userprofile%\\Startmenü\\Autostart\\" + cAs.jar + "\"");

Danke sehr!

PS. Vielleicht sollte ich ja mal die ganze Klasse posten, vielleicht hilft das ja. Ist auch nich besonders lang!
 

JPKI

Top Contributor
Erstmal: Wie machst du das da oben? So wie du deinen Code postest, müsste das Programm ja auch während des Neustarts laufen... Oder hast du nur gekürzt?

Was die Beiden Kommandos angeht: Du musst ja auch den Pfad zur Datei angeben: So wie du es geschrieben hast, such der Compiler nach einer statischen Methode/Variable "jar" in der Klasse "cAs"...

So muss es lauten:

Code:
Runtime.getRuntime().exec("copy \"" + new File("cAs.jar").getPath() + "\" \"%userprofile%\\Startmenü\\Autostart\"");
Runtime.getRuntime().exec("del \"%userprofile%\\Startmenü\\Autostart\\\" + new File("cAs.jar").getPath() + "\"");
//Hatte da oben beim zweiten Befehl einen Backslash zu wenig...

Und ja, poste mal deinen ganzen Code!
 

mobile

Bekanntes Mitglied
Danke, dass sieht schon mal gut aus. ALso jetzt ma leiber doch das Ganze sonst wird das nichts :)!

Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public final class Aktiv {
	/**Fuehrt die Aufgaben des erten Loeschvorgangs aus*/
	public void first() {
		try {
			//Öffnet ClearProg
			Process p = Runtime.getRuntime().exec("C:\\Programme\\ClearProg_1.4.2_Beta11\\ClearProg.exe");
			p.waitFor(); 
			System.out.println("\nClear Prog, erfolgreich ausgefuehrt...");
			//Öffnet XP Clean
			Process p2 = Runtime.getRuntime().exec("C:\\Programme\\XPcleanv5\\XPclean.exe");
			p2.waitFor(); 
			System.out.println("XP Clean, erfolgreich ausgefuehrt...");
			//Öffnet Reg Optmizer
			Process p3 = Runtime.getRuntime().exec("C:\\Programme\\NTRegistryOptimizer\\NTREGOPT.exe");
			p3.waitFor(); 
			System.out.println("Registry Optimizer, erfolgreich ausgefuehrt...");
			//Öffnet Sweepi
			Process p4 = Runtime.getRuntime().exec("C:\\Programme\\YooApplications\\Sweepi\\Sweepi.exe");
			
//Hier soll was in den Autostart geschrieben werden

			Runtime.getRuntime().exec("copy \"" + new File("D:\\Java\\MyDesktop\\cAs.jar") + "\" \"%userprofile%\\Startmenü\\Autostart\"");
			
//Das hier ist bestimmt falsch.... denk ich mal. Weiß auch nicht genau was hier passiert...

			//Serialisieren
			ObjectOutputStream objstr = new ObjectOutputStream(new FileOutputStream("restart.ser"));
			Aktiv ns;
			objstr.writeObject(ns); //ns ist das "Neustarter"-Objekt

			//Deserialisieren
			ObjectInputStream objinstr = new ObjectInputStream(new FileInputStream("restart.ser"));
			Aktiv nr = (Aktiv) objinstr.readObject();

//Hier soll dann weiter gemacht werden...

			Runtime.getRuntime().exec("del \"%userprofile%\\Startmenü\\Autostart\\" + new File("D:\\Java\\MyDesktop\\cAs.jar") + "\"");
			
			
			
			System.out.println("Sweepi, erfolgreich ausgefuehrt...\n");
			System.out.println("Aufgaben wurden erfolgreich ausgefuehrt!\n\n");
			
			Start restart = new Start();
			restart.anzeige();
		}
		catch (Exception rune) {
			System.out.println(rune + "\n---Fehler---\nProgramm konnte nicht gestartet werden");
		}
	}
}

Rufe ein Programm nach dem anderen auf. Beim letzten wird eh ein NEustart durchgeführt, also bräuchte ich den BEfehl für den Neustart wohl nicht. Müsste nur was in den Autostart schreiben und wieder löschen.

Auferufen wird die Klasse von einer anderen (Start) da geht es auch nach abarbeitung wieder hin!
 

mobile

Bekanntes Mitglied
Allerdings bekomme ich jetzt diesen Fehler:

java.io.IOException: CreateProcess: copy "D:\Java\MyDesktop\cAs.jar" "%userprofile%\Startmenü\Autostart" error=2
 

JPKI

Top Contributor
Also ein wenig gilt es noch zu korrigieren:

Wichtig: Wenn das letzte Programm automatisch einen Neustart ausführt, würde ich vorher serialisieren:

Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public final class Aktiv implements Serializable {

   /**Fuehrt die Aufgaben des erten Loeschvorgangs aus*/
   public void first() throws Exception {
         //Öffnet ClearProg
         Process p = Runtime.getRuntime().exec("cmd /c C:\\Programme\\ClearProg_1.4.2_Beta11\\ClearProg.exe");
         p.waitFor();
         System.out.println("\nClear Prog, erfolgreich ausgefuehrt...");
         //Öffnet XP Clean
         Process p2 = Runtime.getRuntime().exec("cmd /c C:\\Programme\\XPcleanv5\\XPclean.exe");
         p2.waitFor();
         System.out.println("XP Clean, erfolgreich ausgefuehrt...");
         //Öffnet Reg Optmizer
         Process p3 = Runtime.getRuntime().exec("cmd /c C:\\Programme\\NTRegistryOptimizer\\NTREGOPT.exe");
         p3.waitFor();
         System.out.println("Registry Optimizer, erfolgreich ausgefuehrt...");

         Runtime.getRuntime().exec("cmd /c copy \"" + new File("cAs.jar").getPath() + "\" \"%userprofile%\\Startmenü\\Autostart\"");

         //Öffnet Sweepi
         Process p4 = Runtime.getRuntime().exec("cmd /c C:\\Programme\\YooApplications\\Sweepi\\Sweepi.exe");
         p4.waitFor();
   }

  public void last() throws Exception {

         Runtime.getRuntime().exec("cmd /c del \"%userprofile%\\Startmenü\\Autostart\\" + new File("cAs.jar").getPath() + "\"");
         System.out.println("Sweepi, erfolgreich ausgefuehrt...\n");
         System.out.println("Aufgaben wurden erfolgreich ausgefuehrt!\n\n");
   }

  public static void main(String args[]) throws Exception {

Aktiv ac;

   try {

   ObjectInputStream in = new ObjectInputStream(new FileInputStream("dateiname.ser"));

   ac = (Aktiv) in.readObject();
   in.close();
   ac.first()

        } catch (Exception ex) {

   ac = new Aktiv();
   ac.last();

   ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("dateiname.ser"));
   out.writeObject(ac);
   out.close();

     }
} 
}

So. Jetzt müsste es gehen.
Denk dran: exec("cmd /c <Programmaufruf>");!!
 

JPKI

Top Contributor
Nochwas:

Ich würde hinter das "out.close();" von der main-Methode noch folgendes schreiben:
Code:
new File("dateiname.ser").delete();
um die Datei zu löschen, sonst kann es beim nächsten Benutzen des Programms Probleme geben!

Geht's jetzt??
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
A Autostart android App Allgemeine Java-Themen 4
T Autostart Allgemeine Java-Themen 3
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
R Eclipse Java Autostart Allgemeine Java-Themen 2
P Effizientes Programmieren - oder Windows Autostart fürs Herunterfahren Allgemeine Java-Themen 11
M Autostart Allgemeine Java-Themen 13
J Autostart Allgemeine Java-Themen 11
S Java Applikation zu autostart hinzufügen Allgemeine Java-Themen 7
M Autostart: Registry oder Link? Allgemeine Java-Themen 6
S Java Webstart Applikation in den Autostart? Allgemeine Java-Themen 3
J Programm von CD startet nicht (autorun/autostart/jre Allgemeine Java-Themen 38
5 usb autostart Allgemeine Java-Themen 3
R Übergabe und Autostart von Paint Allgemeine Java-Themen 4
T Autostart Programm - brauche Tipps Allgemeine Java-Themen 5
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
_user_q Eingegebenen Text wiederholt schreiben lassen Allgemeine Java-Themen 9
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
curranux Ausgabe als Textdatei schreiben. Allgemeine Java-Themen 2
B Wie kann ich mein 8 Klassen Gebilde objektorientierter schreiben? Allgemeine Java-Themen 114
Y Wie sinnvolle unit tests schreiben Allgemeine Java-Themen 29
O Test schreiben mit Äquivalenzklassen (Aufgabe Prüfung) Allgemeine Java-Themen 9
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
H In jar Resources schreiben? Allgemeine Java-Themen 6
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
Zrebna Wieviele Testfälle muss man hier schreiben? (Software Engineering) Allgemeine Java-Themen 13
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
L Erste Schritte Ausdruck schöner schreiben? Allgemeine Java-Themen 8
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
M In Textdatei schreiben Allgemeine Java-Themen 3
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
Aruetiise " in Datei schreiben Allgemeine Java-Themen 2
D Möglichkeit mit GAE eine Table auszulesen und eine csv zu schreiben Allgemeine Java-Themen 22
K Zusammenfassungen schreiben Allgemeine Java-Themen 2
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
KeVoZ_ Nacheinander folgende Strings in Textdokument auf neue Zeile schreiben Allgemeine Java-Themen 6
MiMa Log4j in Dateien mit eigenem Namen schreiben Allgemeine Java-Themen 3
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
M Makrocode von OO in Java schreiben Allgemeine Java-Themen 5
B Animierte Klasse schreiben - Wie? Allgemeine Java-Themen 9
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
R Signatur von Methoden in eine Datei schreiben? Allgemeine Java-Themen 4
F Fehler in Zeile in Log schreiben Allgemeine Java-Themen 6
F Lesen effizienter als schreiben? Allgemeine Java-Themen 4
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
Z NullPointerException beim Schreiben einer ArrayList in eine Datei Allgemeine Java-Themen 6
B Fortschritt beim Schreiben einer Datei ausgeben lassen Allgemeine Java-Themen 7
F Wert in Variable schreiben, wenn diese gerade genutzt wird Allgemeine Java-Themen 10
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
M Input/Output Datei Schreiben Allgemeine Java-Themen 3
V Eclipse Ich kann bei eclipse nicht schreiben Allgemeine Java-Themen 1
Tobse HTTP REST API's in SQL schreiben Allgemeine Java-Themen 1
B Übergebene Werte in Gerätedatei schreiben Allgemeine Java-Themen 2
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
M Methoden jRegistryKey und in die Regitrey schreiben Allgemeine Java-Themen 5
M Text in erstelltes Excelfile schreiben Allgemeine Java-Themen 6
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
F Linux & NetBeans: Datei in Systemverzeichnis schreiben? Allgemeine Java-Themen 1
A Input/Output Spätes Schreiben von Dateien der JVM Allgemeine Java-Themen 3
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
E wav Datei schreiben mit AudioInputStream Allgemeine Java-Themen 3
T Excel - mit jxf sprachabhängige Formeln schreiben Allgemeine Java-Themen 2
S Java-Programm für "Börsenanalyse" schreiben Allgemeine Java-Themen 4
W Schreiben/Lesen aus RS232 / jssc Allgemeine Java-Themen 0
B Text in die Mitte der Konsole schreiben. Allgemeine Java-Themen 1
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
D Datei in Jar schreiben Allgemeine Java-Themen 5
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
MiMa Liste von Pfaden in eine textArea schreiben Allgemeine Java-Themen 7
O Entwicklungshandbuch schreiben Allgemeine Java-Themen 2
S Swing Text in eine JTextArea schreiben Allgemeine Java-Themen 17
O Collections StringSplit und in anderen String schreiben Allgemeine Java-Themen 8
Iron Monkey Inhalt von JTable in die Textdatei mit StringWidth schreiben Allgemeine Java-Themen 3
M Symmetrischen "KeyGenerator" schreiben Allgemeine Java-Themen 2
B Großes Projekt "gut" schreiben Allgemeine Java-Themen 22
F Sachen in datei schreiben Allgemeine Java-Themen 2
G Binäre Datei lesen / schreiben Allgemeine Java-Themen 9
M ImageJ: Mit PlugIn Weichzeichnungsfilter schreiben Allgemeine Java-Themen 9
S Threads Abarbeitungsstatus von Threads in Datei schreiben Allgemeine Java-Themen 2
A DOM Datei schreiben Allgemeine Java-Themen 3
F In ein Textfeld im Browser schreiben? Allgemeine Java-Themen 4
Chumax Datei als Admin schreiben Allgemeine Java-Themen 5
S Von einer ArrayList in die andere schreiben? Allgemeine Java-Themen 6
I Eigenes Mail-Programm schreiben Allgemeine Java-Themen 21
S eigene regEx schreiben Allgemeine Java-Themen 4
E Performanceverlust beim Schreiben von ResultSet in txt Datei Allgemeine Java-Themen 10
F In mitten einer Textdatei schreiben Allgemeine Java-Themen 7
B Java Plugin schreiben Allgemeine Java-Themen 11
R Datei zeilenweise lesen und schreiben Allgemeine Java-Themen 6
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
S Exception beim Schreiben des Dataset in XML Datei Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben