Problema con Windows 10 y la impresora predeterminada
Posted: Fri Mar 09, 2018 8:58 am
Hola amigos, ando peleándome con las últimas actualizaciones de Windows 10, concretamente con la opción que se refiere al control de la impresora predeterminada. Por defecto tiene marcado "Permitir que Windows administre mi impresora predeterminada".
Con esto activado la impresión de FW directa a una impresora no funciona, siempre utiliza la última que se imprimió independientemente del parámetro que se le pasa. Entiendo que es porque la clase PRINTER cambia la impresora por defecto y Windows se lo salta a la torera.
¿Podéis probarlo para ver si es mi versión de FW? (12.04 y Harbour 3.2)
Aquí un ejemplo autocontenido :
Con esto activado la impresión de FW directa a una impresora no funciona, siempre utiliza la última que se imprimió independientemente del parámetro que se le pasa. Entiendo que es porque la clase PRINTER cambia la impresora por defecto y Windows se lo salta a la torera.
¿Podéis probarlo para ver si es mi versión de FW? (12.04 y Harbour 3.2)
Aquí un ejemplo autocontenido :
Code: Select all
#include "fivewin.ch"
function Main()
local oPrn, oFont, aPrinters:={}, cPrinter:=""
aPrinters:=AGetPrinters()
cPrinter:=aPrinters[MsgList (aPrinters, "Elija impresora")]
MSginfo (cPrinter)
PRINT oPrn NAME "Test Impresión" TO cPrinter
DEFINE FONT oFont NAME "Arial" SIZE 0, -10 BOLD OF oPrn
oPrn:SetPage(9) // A4
oPrn:SetPortrait() //Vertical
PAGE
oPrn:cmSay( 1.0, 1.0, "Superior Izquierda", oFont)
oPrn:cmSay( 1.0, 10.5, "Superior Centro", oFont)
oPrn:cmSay( 1.0, 20.0, "Superior Derecha", oFont)
oPrn:cmSay(28.0, 1.0, "Inferior Izquierda", oFont)
oPrn:cmSay(28.0, 10.5, "Inferior Centro", oFont)
oPrn:cmSay(28.0, 20.0, "Inferior Derecha", oFont)
ENDPAGE
ENDPRINT
RELEASE FONT oFont
return nil
function AGetPrinters() // returns an array with all the available printers
local aPrinters, cText, cToken := Chr( 15 )
cText = StrTran( StrTran( StrTran( ;
GetProfString( "Devices", 0 ), Chr( 0 ), cToken ), Chr( 13 ) ), Chr( 10 ) )
aPrinters = Array( Len( cText ) - Len( StrTran( cText, cToken ) ) )
AEval( aPrinters, { |cPrn, nEle | ;
aPrinters[ nEle ] := StrToken( cText, nEle, cToken ) } )
return aPrinters