Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Printer Status
Message
De
04/05/2006 11:46:44
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Divers
Thread ID:
01118502
Message ID:
01119222
Vues:
36
Okay. Here is the magic code:
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-- GetPrinterStatus
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
LPARAMETERS tcPrinterName

*-- Printer status flags used with PRINTER_INFORMATION_2
#DEFINE cnPRINTER_STATUS_READY								 0x00000000  
#DEFINE cnPRINTER_STATUS_PAUSED								 0x00000001  
#DEFINE cnPRINTER_STATUS_ERROR								 0x00000002  
#DEFINE cnPRINTER_STATUS_PENDING_DELETION 					 0x00000004  
#DEFINE cnPRINTER_STATUS_PAPER_JAM 							 0x00000008  
#DEFINE cnPRINTER_STATUS_PAPER_OUT 							 0x00000010  
#DEFINE cnPRINTER_STATUS_MANUAL_FEED 						 0x00000020
#DEFINE cnPRINTER_STATUS_PAPER_PROBLEM 						 0x00000040
#DEFINE cnPRINTER_STATUS_OFFLINE 							 0x00000080
#DEFINE cnPRINTER_STATUS_IO_ACTIVE 							 0x00000100
#DEFINE cnPRINTER_STATUS_BUSY 								 0x00000200
#DEFINE cnPRINTER_STATUS_PRINTING 							 0x00000400
#DEFINE cnPRINTER_STATUS_OUTPUT_BIN_FULL 					 0x00000800	
#DEFINE cnPRINTER_STATUS_NOT_AVAILABLE						 0x00001000
#DEFINE cnPRINTER_STATUS_WAITING 							 0x00002000
#DEFINE cnPRINTER_STATUS_PROCESSING 						 0x00004000
#DEFINE cnPRINTER_STATUS_INITIALIZING						 0x00008000
#DEFINE cnPRINTER_STATUS_WARMING_UP 						 0x00010000
#DEFINE cnPRINTER_STATUS_TONER_LOW 							 0x00020000
#DEFINE cnPRINTER_STATUS_NO_TONER 							 0x00040000
#DEFINE cnPRINTER_STATUS_PAGE_PUNT 							 0x00080000
#DEFINE cnPRINTER_STATUS_USER_INTERVENTION 					 0x00100000
#DEFINE cnPRINTER_STATUS_OUT_OF_MEMORY						 0x00200000
#DEFINE cnPRINTER_STATUS_DOOR_OPEN 							 0x00400000
#DEFINE cnPRINTER_STATUS_SERVER_UNKNOWN 					 0x00800000
#DEFINE cnPRINTER_STATUS_POWER_SAVE 						 0x01000000


DECLARE INTEGER GetPrinter IN winspool.drv AS GetPrinterA INTEGER hPrinter, INTEGER Lvl, STRING @pPrinter, INTEGER cbBuf, INTEGER @pcbNeeded
DECLARE INTEGER OpenPrinter IN winspool.drv AS OpenPrinterA STRING pPrinterName, INTEGER @phPrinter, INTEGER pDefault
DECLARE INTEGER ClosePrinter IN winspool.drv AS ClosePrinterA INTEGER hPrinter   

LOCAL lcPrinterInfo
LOCAL lcPrinterStatus

LOCAL lnResult
LOCAL lnPrinterStatus
LOCAL lnHandle
LOCAL lnBufferSize
LOCAL lnBytesUsed

WITH THIS
	lcPrinterStatus = ''
	lnHandle 	    = 0
	
	lnResult	    = OpenPrinterA(tcPrinterName, @lnHandle, 0)

	IF lnResult # 0
		lnBufferSize  = 4096
		lcPrinterInfo = REPLICATE(CHR(0), lnBufferSize)

		lnResult	  = GetPrinterA(lnHandle, 2, @lcPrinterInfo, lnBufferSize, @lnBytesUsed)

		IF lnResult # 0

		    lnPrinterStatus = INT(Buf2DWord(SUBSTR(lcPrinterInfo, cnPRINTER_STATUS_OFFSET, 4)))

			DO CASE
				CASE lnPrinterStatus = cnPRINTER_STATUS_READY
					lcPrinterStatus = 'Ready'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PAUSED
					lcPrinterStatus = 'Paused'

				CASE lnPrinterStatus = cnPRINTER_STATUS_ERROR
					lcPrinterStatus = 'Error'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PENDING_DELETION
					lcPrinterStatus = 'Deleting...'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PAPER_JAM
					lcPrinterStatus = 'Paper Jam'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PAPER_OUT
					lcPrinterStatus = 'Paper Out'

				CASE lnPrinterStatus = cnPRINTER_STATUS_MANUAL_FEED
					lcPrinterStatus = 'Manual Feed Required'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PAPER_PROBLEM
					lcPrinterStatus = 'Paper Problem'

				CASE lnPrinterStatus = cnPRINTER_STATUS_OFFLINE
					lcPrinterStatus = 'Offline'

				CASE lnPrinterStatus = cnPRINTER_STATUS_IO_ACTIVE
					lcPrinterStatus = 'Downloading Job'

				CASE lnPrinterStatus = cnPRINTER_STATUS_BUSY
					lcPrinterStatus = 'Busy'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PRINTING
					lcPrinterStatus = 'Printing'

				CASE lnPrinterStatus = cnPRINTER_STATUS_OUTPUT_BIN_FULL
					lcPrinterStatus = 'Output Bill Full'

				CASE lnPrinterStatus = cnPRINTER_STATUS_NOT_AVAILABLE
					lcPrinterStatus = 'Not Available'

				CASE lnPrinterStatus = cnPRINTER_STATUS_WAITING
					lcPrinterStatus = 'Waiting'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PROCESSING
					lcPrinterStatus = 'Processing Job'

				CASE lnPrinterStatus = cnPRINTER_STATUS_INITIALIZING
					lcPrinterStatus = 'Initializing'

				CASE lnPrinterStatus = cnPRINTER_STATUS_WARMING_UP
					lcPrinterStatus = 'Warming Up'

				CASE lnPrinterStatus = cnPRINTER_STATUS_TONER_LOW
					lcPrinterStatus = 'Toner Low'

				CASE lnPrinterStatus = cnPRINTER_STATUS_NO_TONER
					lcPrinterStatus = 'Toner Out'

				CASE lnPrinterStatus = cnPRINTER_STATUS_PAGE_PUNT
					lcPrinterStatus = 'Page too Complex'

				CASE lnPrinterStatus = cnPRINTER_STATUS_USER_INTERVENTION
					lcPrinterStatus = 'User Intervention Required'

				CASE lnPrinterStatus = cnPRINTER_STATUS_OUT_OF_MEMORY
					lcPrinterStatus = 'Out of Memory'

				CASE lnPrinterStatus = cnPRINTER_STATUS_DOOR_OPEN
					lcPrinterStatus = 'Door Open'

				CASE lnPrinterStatus = cnPRINTER_STATUS_SERVER_UNKNOWN
					lcPrinterStatus = 'Unable to connect'

				CASE lnPrinterStatus = cnPRINTER_STATUS_POWER_SAVE
					lcPrinterStatus = 'Power Save Mode'

				OTHERWISE
					lcPrinterStatus = ALLTRIM(STR(lnPrinterStatus))
			ENDCASE

		ENDIF
		
	   lnResult = ClosePrinterA(lnHandle)   
		
	ENDIF


ENDWITH

RETURN lcPrinterStatus



*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
*-- Buf2DWord
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
LPARAMETER tcBuffer

LOCAL lnReturn

lnReturn = ASC(SUBSTR(tcBuffer, 1,1)) + ASC(SUBSTR(tcBuffer, 2,1)) * 256 + ASC(SUBSTR(tcBuffer, 3,1)) * 65536 + ASC(SUBSTR(tcBuffer, 4,1)) * 16777216

RETURN lnReturn
Semurg Enterprise
FRX2Any - where thinking is done for you
www.frx2any.com
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform