Con esta función pueden averiguar si una impresora es de matriz de puntos.
CLEAR DIMENSION asPrn[1] FOR nPrn = 1 TO APRINTERS(asPrn) sPrn = asPrn[nPrn, 1] ? PADR(sPrn,50), " ", IIF(IsDotPrinter (sPrn), "Matriz", "") NEXT RETURN FUNCTION IsDotPrinter (sPrn) LOCAL nBins, sBuff #DEFINE DC_BINS 6 #DEFINE DMBIN_TRACTOR 8 DECLARE LONG DeviceCapabilities IN WinSpool.drv ; STRING @ sPrinter, STRING @ sPort, ; INTEGER nCapability, STRING @ sReturn, STRING @ pDevMode sBuff = SPACE(512) * Lista de words de bandejas nBins = DeviceCapabilities (sPrn, NULL, DC_BINS, @sBuff, NULL) IF nBins > 0 sBuff = PADR(sBuff, nBins) ENDIF CLEAR DLLS DeviceCapabilities RETURN CHR(DMBIN_TRACTOR) $ sBuff ENDFUNC
Mario Lopez
Gracias por el aporte.
ResponderBorrarMarcó el error la variable DC_BINS no se encuentra. Se corrigió anotando:
#define DC_BINS 6
#define DMBIN_TRACTOR 8
Al inicio del código.