raumgleita
Grünschnabel
Hallo allerseits!
Ich suche eine eifache Lösung für folgendes Szenario. Das Programm soll das hinzufügen von Netzwerkdruckern erleichtern (also ohne Windows Assistent).
Ich habe ein GUI erstellt in welchem man einen Druckernamen angeben kann. Mit einem Radio Button kann zusätzlich wählen ob man den angegebenen Drucker als Standard einrichten will.
Folgendes Problem stellt sich:
Es gibt mehrere Druckerserver und es gibt keine Logik mit der ich ermitteln kann, welcher Drucker auf welchem Druckerserver ist. Also muss alle Druckerserver probieren bis es klappt. Dabei soll die Fehlermeldung, dass der Drucker nicht gefunden wurde, unterdrückt werden. Ich möchte dann eine eigene Meldung ausgeben falls der Drucker auf allen Druckerserver nicht gefunden wurde.
Ich habe die StreamGobbler Klasse, welcher unter der GNU veröffentlicht wurde, gefunden:
Ebenfalls aus dem Internet habe ich die CommandLine Klasse:
Und noch meine eigene Klasse welche ausgeführt wird wenn der Connect Button gedrückt wurde:
Die Meldung "Can't connect to the printer" erscheint weiterhin...
Werden eventuell mit der StreamGobbler Klasse nur Fehlermeldungen im DOS Fenster unterdrückt?
Gruss
raumgleita
Ich suche eine eifache Lösung für folgendes Szenario. Das Programm soll das hinzufügen von Netzwerkdruckern erleichtern (also ohne Windows Assistent).
Ich habe ein GUI erstellt in welchem man einen Druckernamen angeben kann. Mit einem Radio Button kann zusätzlich wählen ob man den angegebenen Drucker als Standard einrichten will.
Folgendes Problem stellt sich:
Es gibt mehrere Druckerserver und es gibt keine Logik mit der ich ermitteln kann, welcher Drucker auf welchem Druckerserver ist. Also muss alle Druckerserver probieren bis es klappt. Dabei soll die Fehlermeldung, dass der Drucker nicht gefunden wurde, unterdrückt werden. Ich möchte dann eine eigene Meldung ausgeben falls der Drucker auf allen Druckerserver nicht gefunden wurde.
Ich habe die StreamGobbler Klasse, welcher unter der GNU veröffentlicht wurde, gefunden:
Code:
{
InputStream is;
String type;
OutputStream os;
StreamGobbler(InputStream is, String type)
{
this(is, type, null);
}
StreamGobbler(InputStream is, String type, OutputStream redirect)
{
this.is = is;
this.type = type;
this.os = redirect;
}
public void run()
{
try
{
PrintWriter pw = null;
if (os != null)
pw = new PrintWriter(os);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null)
{
if (pw != null)
pw.println(line);
System.out.println(line);
}
if (pw != null)
pw.flush();
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
Ebenfalls aus dem Internet habe ich die CommandLine Klasse:
Code:
package business;
import java.io.*;
public class CommandLine {
public static void exec(String cmd) throws Exception {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd.toString());
StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(),
"ERROR");
StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(),
"OUTPUT");
errorGobbler.start();
outputGobbler.start();
}
public static void exec(String cmd, OutputStream output) throws Exception {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(cmd.toString());
StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream(),
"ERROR", output);
StreamGobbler outputGobbler = new StreamGobbler(proc.getInputStream(),
"OUTPUT", output);
errorGobbler.start();
outputGobbler.start();
}
}
Und noch meine eigene Klasse welche ausgeführt wird wenn der Connect Button gedrückt wurde:
Code:
public void printerConnect(String name, boolean standard){
CommandLine cmd = new CommandLine();
String command;
command = "rundll32 printui.dll,PrintUIEntry /in /n \\\\printserver\\name 2>nul";
System.out.println(command);
try{
cmd.exec(command);
}
catch(Exception e){
}
Die Meldung "Can't connect to the printer" erscheint weiterhin...
Werden eventuell mit der StreamGobbler Klasse nur Fehlermeldungen im DOS Fenster unterdrückt?
Gruss
raumgleita