#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 lbRetValBut for standart HP LJ (no indexes or any other marks here) driver that comes with WindowsXP the result of the function is .t. I think I do something totaly wrong, but I can't find what.