>#define NUMCOLORS 24 >#define DC_TRUETYPE 15 >#define DCTT_BITMAP 1 >#define COLORRES 108 > >cPrinter = GETPRINTER() >=APRINTERS(aPrnts) >prtPos = ASCAN(aPrnts,cPrinter,1,-1,1,8) > >? IsPrinterMatrix(cPrinter, aPrnts[prtPos, 2]) > > > > > > >FUNCTION IsPrinterMatrix(lcPrinterName, lcPort) > > LOCAL lhPrinterHandler,lbRetVal, lnDC > > lbRetVal = .f. && .f. - Not a DotMatrix Printer > && .t. - DotMatrixc Printer > > lhPrinterHandler = 0 > > DECLARE INTEGER GetDeviceCaps IN WIN32API INTEGER hdc,; > INTEGER nIndex > > DECLARE INTEGER DeviceCapabilities IN winspool.drv STRING lpDeviceName,; > STRING lpPort,; > LONG iIndex,; > LONG lpOutput,; > LONG lpDevMode > > DECLARE INTEGER CreateDC IN gdi32 STRING lpszDriver,; > STRING lpszDevice,; > STRING lpszOutput,; > INTEGER lpInitData > DECLARE INTEGER DeleteDC IN gdi32 INTEGER lhDC > > lnDC = CreateDC("WINSPOOL", lcPrinterName, lcPort, 0) > CLEAR > ? > ? > ? lnDC > ? lcPrinterName, lcPort > ? "Colors -", GetDeviceCaps(lnDC, NUMCOLORS) > ? "Capabilities-",DeviceCapabilities(lcPrinterName, lcPort, DC_TRUETYPE, 0, 0) > IF GetDeviceCaps(lnDC ,NUMCOLORS) <= 16 .AND.; > DeviceCapabilities(lcPrinterName, lcPort, DC_TRUETYPE, 0x00, 0x00) == DCTT_BITMAP > lbRetVal = .t. > ENDIF > DeleteDC(lnDC) > CLEAR DLLS CreateDC, DeleteDC,; > GetDeviceCaps, DeviceCapabilities > >RETURN lbRetVal >>