Jump to content

LPTx mappen und Drucker checken


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo!

Es geht hier um zwei Kyocera Drucker, die an zwei Computern im Netz je an LPT1 angeschlossen und als KyoLPforte und KyoLBSE freigegeben sind. Weil einiger Rechnungsdruck via DOS läuft, muß ich die Drucker mit NET USE LPT1 \\Computer\KyoLPforte bzw. KyoLBSE mappen. Via CMD oder Batch ist das alles kein Problem.

Nun möchte ich gern via Batch den ersten Drucker auf LPT1 mappen und nur, wenn das nicht klappt, den zweiten Drucker. Dann bekäme der User eine Message mit der Info, wo er sich die Drucke abholen kann. Wie checke ich das nun ab, ob das Mappen läuft? Gibt es zu NET USE LPT ein Errorlevel, was ich auswerten kann. Wenn ja, welches?

Das ist aber leider nur die halbe Miete. Denn wenn LPT1 gemappt ist, weiß ich noch lange nicht, ob der Drucker eingeschaltet, online ist oder Papier hat. Habe ich einen Drucker direkt an LPT1 angeschlossen, kriege ich das z.B. mit PrinterStat() bequem raus. Gibt es dazu was passendes auch über die gemappte Freigabe bzw. den Druckserver hinweg?

Ach ja, die Drucker hängen an W2K Workstations, die Clients sind ebenfalls W2K und NT4 WS.

Gegrüßt und Danke für alle Gedanken!

Link zu diesem Kommentar

Hi Finanzamt,

 

freu mich immer wieder auf deine Posts zu antworten :)

 

Ich würd das ganze jetzt spontan per WMI und VBScript lösen. Ich weiß nur nicht inwieweit Du damit klar kommst. Wenn ich mal Zeit hab bastel ich auch wohl ne Kleinigkeit.

 

Über die Klasse Win32_Printer kannst Du Drucker-Stati lokal und remote prüfen. Vorausgesetzt, WMI läuft auf dem Zielrechner. Bei 2000 und XP kein Thema, bei NT bin ich mir nicht mehr so sicher.

 

Wenn Du den Druckerstatus weißt, kannst Du auch gleich via VBScript den Drucker verbinden und eine entsprechende Meldung ausgeben.

 

Gruß

Andre

Link zu diesem Kommentar

Hallo und vielen Dank! Ihr habt mich schon mal gut angeschoben!

 

Jetzt versuche ich mal, die Sache zu präzisieren:

Wenn ich einen Drucker physikalisch an LPT1 angeschlossen habe, dann kann ich unter DOS den Interupt 0x17 nutzen und mir über die Funktion 0x02 aus dem Register AH das Statusbyte des Printers zurückgeben lassen.

 ...
{
 Register;
 _AH = 0x02;          /** Fkt.2 (PrinterStat)-**/
 _DX = drucker;       /** drucker: Funktion gibt den BiosPrinter zurück) **/
 Int80x86( 0x17);     /** Printer-IRQ**/
 return( (Int)_AH);   /** Statusbyte aus AH-Register **/
} /* Ende BiosPStat() */ 

Das Statusbyte reicht mir völlig aus [0=Time Out; 1,2=nicht genutzt; 3=I/O-Err.; 4=Printer selected; 5=OutOfPaper; 6=Acknowlwdge; 7=not busy]. Das haut natürlich nur dann hin, wenn LPT1/2 physikalisch vorhanden sind. Es funktioniert aber unter NT4 und W2K auch von der Konsole [CMD] aus.

Und was Vergleichbares brauche ich bezogen auf den Druckserver der via MAP angesprochenen Computer. Der muß doch irgendwo feststellen, ob der Drucker überhaupt eingestöpselt, OnLine und mit Papier versehen ist.

 

@KlausK: Dein Beispiel löst den Fall, daß ein Druckserver gar nicht verfügbar ist, nicht aber, daß der Drucker z.B. offline oder OutOfPaper ist. Allerdings ist mir die || - Syntax im Zusammenhang mit NET USE neu. Könntest Du mir bitte noch einen Hinweis geben, wo ich mich dazu einlesen kann?

 

@Operator: Mit VBS kenne ich mich nicht aus; allerdings sollte ich von C++ oder Delphi auch an die WMI - Funktionen kommen. Laut TecNet kann man WMI unter NT4 installieren. Die Klasse Win32_Printer kenne ich allerdings nicht - weißt Du, ob sie was (welche Funktion?) aus der WinApi nutzt? Dann könnte ich wahrscheinlich meine Mittel einsetzen.

 

@alle: Für einen ersten Check ist für mich noch die Frage offen, ob NET USE LPTx einen Errorlevel zurückgibt. Hat da wer einen Hinweis? Bitte her damit!

Gegrüßt und Dankeschön!

Link zu diesem Kommentar

Hi Finanzamt,

 

das ist ja gerade das tolle an WMI. Man braucht die unterschiedlichen API Calls nicht mehr.

Hab mir den Artikel zwar nicht durchgelesen, aber vielleicht hilft Dir das ja für den Einstieg in Delphi und WMI.

http://www.derentwickler.de/itr/online_artikel/psecom,id,644,nodeid,56.html

 

Meiner Meinung nach einfacher ist die Implementierung in VBScript (direkt im Anmeldescript). Dann bekommst Du für jeden am Windows PC betriebenen Drucker die Stati geliefert.

Und wie Du schon geschrieben hast, ist WMI auch für W9x und NT verfügbar.

 

Gruß

Andre

Link zu diesem Kommentar

Hallo!

und vielen Dank!

@operator: Das ist ja wirklich ein vielversprechender Ansatz. Auch der Link ist sehr informativ und für meine Zwecke sehr gut geeignet, weil mit Beispiel-Listings für Delphi gespickt. Mit der ganzen WMI-Geschichte werde ich mich mal intensiver beschäftigen. Man kann sich ja nicht immer auf seiner Assembler-Library ausruhen.

Hättest Du vielleicht noch aus Deiner Erfahrung im Umgang mit WMI den einen oder anderen Tip für mich, wo ich mich noch schlau machen kann? Die MS-Artikel habe ich im Plan und die CD aus Deinem Link habe ich geordert.

Gegrüßt!

 

P.S. Etwas hartnäckig möchte ich noch nach NET USE Errorleveln fragen. Weiß da wer etwas? Wäre auch hilfreich, wenn mir jemand verläßtlich sagen könnte, daß es da nichts gibt.

Link zu diesem Kommentar

Hi Finanzamt,

 

schön, wenn es Dir weiterhilft :) Freut mich!

WMI ist auf jeden Fall sehr interessant für Administratoren. In unserer Umgebung wollte ich mir demnächst mal die WMI Schnittstellen anschauen, die Citrix so mitliefert. Ich denke, daß man da die Management Console noch gut mit erweitern kann ;)

 

Tipps zu WMI hab ich nicht mehr viele :) Wenn ich was wissen muss ist MSDN und Google Groups meine erste Anlaufstelle. Nichts was es nicht schon mal gab :)

 

Zu deinen Errorleveln: Wenn ich das ganze ausprobiere bekomme ich, egal ob die Zuweisung klappt oder fehlschlägt, immer 0 zurückgeliefert. Und eine andere Möglichkeit das abzufragen ist mir nicht bekannt..

(Ok, du könntest alle Ausgaben in eine Datei umleiten und diese dann via Delphi parsen, aber das ist nun wirklich nicht sehr fein)

 

Gruß

Andre

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...