Grundsätzlich muss ich den Status des n / w Druckers überprüfen, ob er aktiviert ist oder nicht. Gibt es eine Möglichkeit, dies in Java zu tun?
Gibt es dafür eine Drittanbieter-API oder ein Tool?
Ich habe versucht, PrintServiceLookup in Java zu verwenden, aber es gibt nicht den Status, wenn es aktiviert ist oder nicht.
Auch, wenn es in Java nicht möglich ist, gibt es einen Befehl, der in Windows ausgeführt werden kann, der den Status des Druckers gibt?
Dann kann ich diesen Befehl in Java ausführen und überprüfen.
Nach " Funktionsweise von Netzwerkdruck "Es hängt wirklich von der Art des Druckers und dem Protokoll ab, das es unterstützt. Wenn Sie die IP-Adresse und den Port kennen, den Ihr Drucker verwendet, und wenn Ihr Drucker SNMP unterstützt (nur um ein Protokoll auszuwählen), dann müssen Sie Mit dem SNMP-Protokoll kann der Drucker nach Informationen abgefragt werden. Es gibt die Java-Bibliothek SNMP4j , die Ihnen dabei helfen kann. Ich würde vorschlagen, es nicht zu verwenden, außer der Drucker , der ip und der Anschluss werden sich niemals (!) Für Ihre Einrichtung ändern. Dies liegt daran, dass Sie mehrere Probleme haben können
Nehmen wir an, die obigen Fragen würden kein großes Problem darstellen, und wir nehmen an, dass jeder Drucker SNMP unterstützt. Wie bekomme ich Informationen heraus? Neben der erwähnten Java-Bibliothek können Sie snmpget
in Linux von einem Terminal aus verwenden. Die Syntax lautet wie folgt:
Die OID ist eine Objekt-ID für jede Eigenschaft Ihres Druckers, die von ausgeht pagecount zu Tonerkartusche Informationen. Wenn Sie keine OID hinzufügen, erhalten Sie die gesamte Liste der verfügbaren OIDs. Der Kern der Sache ist, obwohl alle OIDs standardisiert sind, die Verwendung der OIDs sich von Marke zu Marke und von Druckermodell zu Druckermodell unterscheidet. Für meine HP funktioniert das Folgende:
%Vor%und gibt
zurück %Vor%Die verwendete OID gibt den Status des Druckers für meine HP zurück. Aber wenn ich die gleiche OID auf meiner Canon verwende, bekomme ich
%Vor%Daher ist es nicht einmal SNMP generisch anwendbar, nicht die anderen Protokolle zu erwähnen, die verfügbar sind.
Unter Berücksichtigung all dieser Informationen ist der einfachste Weg meiner Meinung nach, ob Sie die Verbindung zum Drucker an einem der üblichen Druckeranschlüsse über diesen Code herstellen können
%Vor%Das funktioniert natürlich nur, wenn Sie den Drucker ip bereits kennen.
Wenn Sie die IP-Adresse Ihres Druckers kennen, können Sie diesen Code verwenden, um ihn anzupingen und zu prüfen, ob er Jobs akzeptiert.
%Vor%Natürlich müssen Sie diesen Code ein wenig ändern, um ihn in Ihrem Fall zu verwenden. Außer nativem Zugriff sehe ich keine bessere Lösung.
Grundsätzlich muss ich den Status des n / w Druckers überprüfen, ob er aktiviert ist oder nicht. Gibt es eine Möglichkeit, dies in Java zu tun?
Gibt es dafür eine Drittanbieter-API oder ein Tool?
Ich habe versucht, PrintServiceLookup in Java zu verwenden, aber es gibt nicht den Status, wenn es aktiviert ist oder nicht.
Auch, wenn es in Java nicht möglich ist, gibt es einen Befehl, der in Windows ausgeführt werden kann, der den Status des Druckers gibt?
Dann kann ich diesen Befehl in Java ausführen und überprüfen.
Nach " Funktionsweise von Netzwerkdruck "Es hängt wirklich von der Art des Druckers und dem Protokoll ab, das es unterstützt. Wenn Sie die IP-Adresse und den Port kennen, den Ihr Drucker verwendet, und wenn Ihr Drucker SNMP unterstützt (nur um ein Protokoll auszuwählen), dann müssen Sie Mit dem SNMP-Protokoll kann der Drucker nach Informationen abgefragt werden. Es gibt die Java-Bibliothek SNMP4j , die Ihnen dabei helfen kann. Ich würde vorschlagen, es nicht zu verwenden, außer der Drucker , der ip und der Anschluss werden sich niemals (!) Für Ihre Einrichtung ändern. Dies liegt daran, dass Sie mehrere Probleme haben können
Nehmen wir an, die obigen Fragen würden kein großes Problem darstellen, und wir nehmen an, dass jeder Drucker SNMP unterstützt. Wie bekomme ich Informationen heraus? Neben der erwähnten Java-Bibliothek können Sie %code% in Linux von einem Terminal aus verwenden. Die Syntax lautet wie folgt:
%Vor%Die OID ist eine Objekt-ID für jede Eigenschaft Ihres Druckers, die von ausgeht pagecount zu Tonerkartusche Informationen. Wenn Sie keine OID hinzufügen, erhalten Sie die gesamte Liste der verfügbaren OIDs. Der Kern der Sache ist, obwohl alle OIDs standardisiert sind, die Verwendung der OIDs sich von Marke zu Marke und von Druckermodell zu Druckermodell unterscheidet. Für meine HP funktioniert das Folgende:
%Vor%und gibt
zurück %Vor%Die verwendete OID gibt den Status des Druckers für meine HP zurück. Aber wenn ich die gleiche OID auf meiner Canon verwende, bekomme ich
%Vor%Daher ist es nicht einmal SNMP generisch anwendbar, nicht die anderen Protokolle zu erwähnen, die verfügbar sind.
Unter Berücksichtigung all dieser Informationen ist der einfachste Weg meiner Meinung nach, ob Sie die Verbindung zum Drucker an einem der üblichen Druckeranschlüsse über diesen Code herstellen können
%Vor%Das funktioniert natürlich nur, wenn Sie den Drucker ip bereits kennen.
Ich glaube nicht, dass Java eine portable API zur Überprüfung des Status bereitstellt. Je nach Ihren Anforderungen möchten Sie vielleicht die Windows API überprüfen
%Vor%Mit ein paar JNI-Codes ist das trivial. Vielleicht sollten Sie auch Ссылка in Betracht ziehen nativer Zugriff auf einen Teil Ihres Codes einfacher
Ich habe
verwendet %Vor% es gibt java api zur nativen Druckerei !! Schau dir diese Klasse an
java.awt.Desktop
java2s.com z. B.
Ich kann mir keinen einfachen Weg vorstellen, dies in Java zu tun (zweifellos wird jemand mit einer einzigen Codezeile kommen!). Ich bin vertrauter mit C # und, um Ihre Windows-Frage zu beantworten, würde ich Microsoft WMI verwenden, insbesondere %code% ( Ссылка ). Eine alte CodeProject-Website zeigt, wie Sie in C # mithilfe von %code% auf einen Offline-Drucker testen können ( Ссылка ).
Es könnte in deinem Fall funktionieren, weil dieser Typ ( Ссылка ) produziert hat jWMI, das die WMI-Systeme in Java abfragen kann. Ich bin mir nicht sicher, wie erschöpfend es ist, aber Sie könnten sich vorstellen, dass es auf %code% zugreifen könnte. Es benutzt VBScript, das es innerhalb von Java über %code% ausführt und erhält Werte von %code% , also habe ich keine Ahnung von Geschwindigkeit, aber er spricht auch über die Verwendung von WMIC.exe, die Ihnen besser passen könnte.
Aus seinem Klappentext sieht es so aus, als könnte Ihr Code so einfach sein wie:
%Vor%wobei 7 (0x7) offline ist.
oder
%Vor%Hier können verschiedene Zustände unterschieden werden (z. B. 0x7 = Ausschalten oder 0x8 = Offline usw.)
Die Abfragen ermöglichen auch eine "Select * from" -Syntax, so dass Sie die Drucker durchlaufen können, wenn Sie keinen Namen hatten.
%code% hat eine Eigenschaft ( %code% as Boolean), mit der Sie prüfen können, ob der Drucker lokal oder im Netzwerk ist, und dies ( Ссылка ) ist eine alte, aber interessante, lesen auf Test für einen Netzwerkdrucker in VBScript.
Diese Lösungen sind ziemlich lang im Griff (ich glaube, MI ist die neueste Version von WMI zum Beispiel), aber wenn diese jWMI-Bibliothek für Sie arbeiten kann, könnte es eine Antwort sein.
Ich glaube nicht, dass Java eine portable API zur Überprüfung des Status bereitstellt. Je nach Ihren Anforderungen möchten Sie vielleicht die Windows API überprüfen
%Vor%Mit ein paar JNI-Codes ist das trivial. Vielleicht sollten Sie auch Ссылка in Betracht ziehen nativer Zugriff auf einen Teil Ihres Codes einfacher
Wenn Sie die IP-Adresse Ihres Druckers kennen, können Sie diesen Code verwenden, um ihn anzupingen und zu prüfen, ob er Jobs akzeptiert.
%Vor%Natürlich müssen Sie diesen Code ein wenig ändern, um ihn in Ihrem Fall zu verwenden. Außer nativem Zugriff sehe ich keine bessere Lösung.
Grundsätzlich muss ich den Status des n / w Druckers überprüfen, ob er aktiviert ist oder nicht. Gibt es eine Möglichkeit, dies in Java zu tun?
Gibt es dafür eine Drittanbieter-API oder ein Tool?
Ich habe versucht, PrintServiceLookup in Java zu verwenden, aber es gibt nicht den Status, wenn es aktiviert ist oder nicht.
Auch, wenn es in Java nicht möglich ist, gibt es einen Befehl, der in Windows ausgeführt werden kann, der den Status des Druckers gibt?
Dann kann ich diesen Befehl in Java ausführen und überprüfen.
Nach " Funktionsweise von Netzwerkdruck "Es hängt wirklich von der Art des Druckers und dem Protokoll ab, das es unterstützt. Wenn Sie die IP-Adresse und den Port kennen, den Ihr Drucker verwendet, und wenn Ihr Drucker SNMP unterstützt (nur um ein Protokoll auszuwählen), dann müssen Sie Mit dem SNMP-Protokoll kann der Drucker nach Informationen abgefragt werden. Es gibt die Java-Bibliothek SNMP4j , die Ihnen dabei helfen kann. Ich würde vorschlagen, es nicht zu verwenden, außer der Drucker , der ip und der Anschluss werden sich niemals (!) Für Ihre Einrichtung ändern. Dies liegt daran, dass Sie mehrere Probleme haben können
Nehmen wir an, die obigen Fragen würden kein großes Problem darstellen, und wir nehmen an, dass jeder Drucker SNMP unterstützt. Wie bekomme ich Informationen heraus? Neben der erwähnten Java-Bibliothek können Sie Win32_Printer
in Linux von einem Terminal aus verwenden. Die Syntax lautet wie folgt:
Die OID ist eine Objekt-ID für jede Eigenschaft Ihres Druckers, die von ausgeht pagecount zu Tonerkartusche Informationen. Wenn Sie keine OID hinzufügen, erhalten Sie die gesamte Liste der verfügbaren OIDs. Der Kern der Sache ist, obwohl alle OIDs standardisiert sind, die Verwendung der OIDs sich von Marke zu Marke und von Druckermodell zu Druckermodell unterscheidet. Für meine HP funktioniert das Folgende:
%Vor%und gibt
zurück %Vor%Die verwendete OID gibt den Status des Druckers für meine HP zurück. Aber wenn ich die gleiche OID auf meiner Canon verwende, bekomme ich
%Vor%Daher ist es nicht einmal SNMP generisch anwendbar, nicht die anderen Protokolle zu erwähnen, die verfügbar sind.
Unter Berücksichtigung all dieser Informationen ist der einfachste Weg meiner Meinung nach, ob Sie die Verbindung zum Drucker an einem der üblichen Druckeranschlüsse über diesen Code herstellen können
%Vor%Das funktioniert natürlich nur, wenn Sie den Drucker ip bereits kennen.
Ich glaube nicht, dass Java eine portable API zur Überprüfung des Status bereitstellt. Je nach Ihren Anforderungen möchten Sie vielleicht die Windows API überprüfen
%Vor%Mit ein paar JNI-Codes ist das trivial. Vielleicht sollten Sie auch Ссылка in Betracht ziehen nativer Zugriff auf einen Teil Ihres Codes einfacher
Ich habe
verwendet %Vor% es gibt java api zur nativen Druckerei !! Schau dir diese Klasse an
java.awt.Desktop
java2s.com z. B.
Ich kann mir keinen einfachen Weg vorstellen, dies in Java zu tun (zweifellos wird jemand mit einer einzigen Codezeile kommen!). Ich bin vertrauter mit C # und, um Ihre Windows-Frage zu beantworten, würde ich Microsoft WMI verwenden, insbesondere Win32_Printer
( Ссылка ). Eine alte CodeProject-Website zeigt, wie Sie in C # mithilfe von Win32_Printer
auf einen Offline-Drucker testen können ( Ссылка ).
Es könnte in deinem Fall funktionieren, weil dieser Typ ( Ссылка ) produziert hat jWMI, das die WMI-Systeme in Java abfragen kann. Ich bin mir nicht sicher, wie erschöpfend es ist, aber Sie könnten sich vorstellen, dass es auf cmd.exe
zugreifen könnte. Es benutzt VBScript, das es innerhalb von Java über stdout
ausführt und erhält Werte von Win32_Printer
, also habe ich keine Ahnung von Geschwindigkeit, aber er spricht auch über die Verwendung von WMIC.exe, die Ihnen besser passen könnte.
Aus seinem Klappentext sieht es so aus, als könnte Ihr Code so einfach sein wie:
%Vor%wobei 7 (0x7) offline ist.
oder
%Vor%Hier können verschiedene Zustände unterschieden werden (z. B. 0x7 = Ausschalten oder 0x8 = Offline usw.)
Die Abfragen ermöglichen auch eine "Select * from" -Syntax, so dass Sie die Drucker durchlaufen können, wenn Sie keinen Namen hatten.
Network
hat eine Eigenschaft ( %code% as Boolean), mit der Sie prüfen können, ob der Drucker lokal oder im Netzwerk ist, und dies ( Ссылка ) ist eine alte, aber interessante, lesen auf Test für einen Netzwerkdrucker in VBScript.
Diese Lösungen sind ziemlich lang im Griff (ich glaube, MI ist die neueste Version von WMI zum Beispiel), aber wenn diese jWMI-Bibliothek für Sie arbeiten kann, könnte es eine Antwort sein.
es gibt java api zur nativen Druckerei !! Schau dir diese Klasse an
java.awt.Desktop
java2s.com z. B.
Tags und Links java network-printers