Bei Anwendungen mit Druckausgabe besteht in aller Regel die Notwendigkeit, Informationen über die installierten Drucker zu erhalten. Über das Application-Objekt (_App)
ermöglicht CONZEPT 16 dem Entwickler einen Zugriff auf die eingerichteten Drucker bzw. Druckertreiber.
Das Application-Objekt stellt die verfügbaren Drucker in Form einer Liste zur Verfügung. Über die Eigenschaft ppPrinterList
erhält der Entwickler den Handle auf diese Liste.
tPrtList # _App->ppPrinterList
Ausgehend von diesem Handle können mit Hilfe der Funktion PrtInfo()
die einzelnen Drucker ermittelt werden. Als Resultat liefert die Funktion einen Deskriptor auf den Drucker bzw. das Drucker-Objekt.
// Verfügbare Drucker ermitteln
tPrtList # _App->ppPrinterList;
if (tPrtList > 0)
{
for tPrinter # tPrtList->PrtInfo(_PrtFirst)
loop tPrinter # tPrinter->PrtInfo(_PrtNext)
while (tPrinter != 0)
{
...
...
}
}
Das Erstellen der Liste mit den installierten Druckern führt der CONZEPT 16-Client einmalig beim Anmelden an einer Datenbank durch. Um eine Liste der Treiber zu erhalten, die dem aktuellen Konfigurationsstand entspricht, kann der Eigenschaft ppPrinterList
das Argument _PrtListRefresh
mitgegeben werden. Bei Angabe des Arguments werden die verfügbaren Drucker erneut ermittelt und in die Liste eingelesen.
// Liste der verfügbaren Drucker aktualisieren
tPrtList # _App->ppPrinterList(_PrtListRefresh);
Zu jedem Drucker kann eine Vielzahl von Informationen eingeholt werden. Unterteilt werden diese in Eigenschaften, Attribute und Status-Informationen. Direkt abrufbar sind die Eigenschaften ppName
(Name des Druckers), ppCaption
(Anzeigename des Druckers) und ppComment
(Kommentar).
Der Zugriff auf weitere Eigenschaften sowie Attribute und Status-Informationen, ist erst nach dem Ausführen der Funktion PrtPrinterRefresh()
, möglich.
// Alle Eigenschaften übermitteln
tPrinter->PrtPrinterRefresh();
Eigenschaften
Zu den Eigenschaften zählen Angaben wie zum Beispiel Name des Druckers, verwendeter Port oder Standort des Druckers.
// Name des Druckers ermitteln
tName # tPrinter->ppName
// Port des Druckers ermitteln
tPort # tPrinter->ppNamePort
Attribute
Die Arttribute geben zum Beispiel Auskunft darüber, ob es sich um einen lokalen- Netzwerk- oder Fax-Drucker handelt. Die Attribute werden über die Eigenschaft ppAttributes
des Drucker-Objekts abgefragt.
// Netzwerkdrucker
tNetwork # (tPrinter->ppAttributes & _PrtAttribNetwork > 0)
// Faxdrucker
tFax # (tPrinter->ppAttributes & _PrtAttribFax > 0)
Status-Informationen
Zu den Status-Informationen gehören Angaben über den Papier- oder Tonerstatus. Der Status wird über die Eigenschaft ppStatus
des Drucker-Objekts abgefragt.
// Tonerstand ist niedrig
tToner # (tPrinter->ppStatus & _PrtStatusTonerLow > 0)
// Drucker ist angehalten
tPause # (tPrinter->ppStatus & _PrtStatusPause > 0)
Das Ermitteln der Eigenschaften ist abhängig vom jeweiligen Treiber. Sind bestimmte Informationen nicht abfragbar, kann CONZEPT 16 an dieser Stelle nichts zurückgeben.
Eine Übersicht der möglichen Eigenschaften und Status-Informationen kann in der CONZEPT 16-Dokumentation nachgelesen werden.
4 Antworten
@Th.Eichele
Kann ein Drucker nicht erreicht werden, führt das im Normalfall zu keinen längeren Wartezeiten.
was passiert, wenn ein Drucker z.Zt. nicht erreichbar ist ?
führt das zu langen Timeout-Zeiten ?
@J. Schmiedel
Da haben Sie Recht, ein Blockieren ist nicht möglich.
Danke für die Infos – sehr schön, dass man so viele Eigenschaften auslesen kann!
Aber es ist wahrscheinlich nicht möglich, den Drucker für andere Benutzer zu "blockieren"?
Dann könnte man sicherstellen, dass die eigenen Druckjobs "en bloc" erscheinen und sich "niemand dazwischen mogelt".
Ich fand diesbzgl. die Properties
_PrtStatusBusy, _PrtStatusPrinting, _PrtStatusProcessing
in der Hilfe.