Code: Alles auswählen
oDrucker := XbpPrinter():new()
aDrucker := oDrucker:list()
nLaenge := len(aDrucker)
if nLaenge == 0
fehler("Es sind keine Drucker installiert!")
return NIL
endif
aSchaechte := array(nLaenge)
for i := 1 to nLaenge
if .not. valtype(oDrucker:create(aDrucker[i])) == "O"
fehler("Auf den Drucker " + aDrucker[i] + " kann nicht zugegriffen werden!")
elseif .not. val(str(oDrucker:printerStatus())) == XBPPRN_STATUS_READY
fehler("Drucker " + aDrucker[i] + " nicht verfügbar: " + chr(13) + cPrinterStatus(oDrucker:printerStatus()))
aSchaechte[i] := oDrucker:paperBins()
endif
oDrucker:destroy()
next i
Code: Alles auswählen
aSchaechte[i] := oDrucker:paperBins()
also ein XBPPRN_STATUS_NA.Der Drucker ist nicht verfügbar weil das XbpPrinter Objekt den Drucker nicht innerhalb :create() erreichen konnte, oder
das Druckerobjekt des Betriebssystems gerade gelöscht wird
Also doch aus
Code: Alles auswählen
if .not. valtype(oDrucker:create(aDrucker[i])) == "O"
Code: Alles auswählen
if .not. oDrucker:create(aDrucker[i]) == oDrucker
Bei dem Kunden war aber nichts mit den Druckern, sie funktionieren aus anderen Windows-Anwendungen. Erst als alle Drucker auf dem Client (Win7 Prof, 64bit) gelöscht und nochmal neu verbunden wurden, war der Fehler weg. Die Drucker wurden zu dem Fehlerzeitpunkt (war jederzeit reproduzierbar auch nach PC-Neustart) jedoch nicht gerade durch das Betriebssystem gelöscht...