Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to know which printer user selected in ComDlg?
Message
 
To
20/09/2006 02:28:30
General information
Forum:
Visual FoxPro
Category:
ActiveX controls in VFP
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP1
Miscellaneous
Thread ID:
01155181
Message ID:
01155504
Views:
24
Hi Gregory/Dragan,

PMFJI as I may be missing something here, but if the purpose is to get the printer driver, wouldn't APRINTERS(array, 1) suffice?


>
>try this. It's part of the code I use to detect postscript drivers
>
>function do_it()
>	
>	declare integer OpenPrinter in Winspool.drv ;
>		string @ pPrinterName, ;
>		long @ phPrinter, ;
>		Integer
>
>	declare integer ClosePrinter in Winspool.drv long hPrinter
>
>	declare integer GetPrinterDriver in Winspool.drv ;
>			long PrinterHandle, ;
>			Integer pEnvironment, ;	&& null for current
>			long nLevel, ;
>			String @ pDriverInfo, ;	&& driver data buffer
>			long cbBuflen, ;
>			long @pcbNeeded
>			
>	local i, aa[1], PrinterName, PrinterPort, PrinterDriver
>	
>	for i = 1 to aprinters(aa)
>		PrinterName = aa[m.i, 1]
>		PrinterPort = aa[m.i, 2]
>		
>		if( !PrinterDriver_Get(m.PrinterName, @m.PrinterDriver) )
>			PrinterDriver = '???'
>		endif
>		
>		?PrinterName, PrinterPort, PrinterDriver
>	endfor
>endfunc
>
>function PrinterDriver_Get(PrinterName, PrinterDriver)
>		
>	
>	local Success
>	Success = TRUE
>
>	local Handle, DriverInfo, pcbNeeded
>	DriverInfo = space(1024)
>	
>
>	Handle = 0
>	pcbNeeded = 0
>	
>	do case
>	case empty(OpenPrinter(@m.PrinterName, @m.Handle, 0))
>		assert FALSE
>		Success = FALSE
>		
>	case empty(GetPrinterDriver(m.Handle, 0, 1, @m.DriverInfo, len(m.DriverInfo), @m.pcbNeeded))
>		assert FALSE
>		Success = FALSE
>		
>	otherwise
>		
>		PrinterDriver = right(m.DriverInfo, m.pcbNeeded-4)
>		PrinterDriver = left(m.PrinterDriver, at(chr(0), m.PrinterDriver)-1)
>	endcase
>	
>	
>	do case
>	case empty(m.Handle)
>	
>	case empty(ClosePrinter(m.Handle))
>		assert FALSE
>	
>	endcase
>	
>	return m.Success
>	
>endfunc
>*--------------------------------------------------------------------------
>
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform