Problema con Windows 10 y la impresora predeterminada

Problema con Windows 10 y la impresora predeterminada

Postby AngelSalom » 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 :

Code: Select all  Expand view
#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
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Problema con Windows 10 y la impresora predeterminada

Postby AngelSalom » Fri Mar 09, 2018 11:31 am

Bueno, de momento solucionado modificando el registro, no es lo que prefiero pero ... aquí va por si os hace falta :

Code: Select all  Expand view
#include "FiveWin.Ch"
#define  HKEY_CURRENT_USER       2147483649

//---------------------------------------------------------------------------//

function Main()

   LOCAL oReg

   oReg := TReg32():New( HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Windows" )
   oReg:Set( "LegacyDefaultPrinterMode", 1 )
   oReg:Close()

return nil

//---------------------------------------------------------------------------//
Angel Salom
Visionwin Software - https://www.visionwin.com
------------------------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.4
User avatar
AngelSalom
 
Posts: 727
Joined: Fri Oct 07, 2005 7:38 am
Location: Benicarló (Castellón ) - España

Re: Problema con Windows 10 y la impresora predeterminada

Postby hmpaquito » Fri Mar 09, 2018 1:15 pm

Gracias Ángel
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Problema con Windows 10 y la impresora predeterminada

Postby miarcod » Tue Feb 19, 2019 6:15 pm

Este problema sigue sin otra solución que la de desactivar la funcion para que windows controle la impresora predeterminada?

¿Alguna solución sin necesidad de desactivar esta funcion de Windows 10?
¿Se puede enviar una impresion a una impresora concreta sin establecer esta impresora como impresora predeterminada?
Gracias
miarcod
 
Posts: 199
Joined: Tue Oct 11, 2005 2:17 pm

Re: Problema con Windows 10 y la impresora predeterminada

Postby karinha » Tue Feb 19, 2019 7:58 pm

Intenta asi:

Code: Select all  Expand view

#Include "Fivewin.ch"

FUNCTION Main()

   LOCAL oPrn, oFont, aPrinters := {}, cPrinter := ""
   
   // aPrinters := AGetPrinters()

   aPrinters := DefaultPrinter()

   /*
   cPrinter := aPrinters[MsgList (aPrinters, "Elija impresora")]

   MSginfo ( cPrinter )
   */

   
   // PRINT oPrn NAME "Test Impresión" TO cPrinter

   PRINT oPrn NAME "Test Impresión" PREVIEW MODAL

   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 DefaultPrinter()

   LOCAL nPrn, nRet, sGetDefaultPrinter

   nRet := PrinterSetUp()

   nPrn := PrnGetName()

   IF( nRet # 0 )

      SetDefaultPrinter( PRNGETNAME() ) // MUDA O DEFAULT DA IMPRESSORA

      sGetDefaultPrinter := GetDefaultPrinter()

      // ? PrnStatus( sGetDefaultPrinter )

      IF PrnStatus( sGetDefaultPrinter ) = 4096

         // SPOOLER
         MsgRun( sGetDefaultPrinter +": "+isprint( GetDefaultPrinter() ) + ;
                         " ou Spooler Desligado.", "Status da Impressora", ;
                 {|| WinExec( "NET START SPOOLER", 7 ) } )

      ENDIF

      //? GetPrinter()

   ELSE

      RETURN( .F. )

   ENDIF

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
*/

 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Problema con Windows 10 y la impresora predeterminada

Postby miarcod » Fri Feb 22, 2019 5:48 pm

Gracias por responder
Lo que me propones no funciona.
Yo lo que pretendo es enviar la impresión a una impresora predefinida en el sistema sin necesidad de pasar por el cuadro de selección de impresora. Esto antes de Windows 10 funcionaba correctamente pero ahora da igual la impresora que le indique la impresión se envia siempre a la última impresora utilizada (si windows administra la impresora por defecto)

Lo que pretendo es lo siguiente:
Tengo varias impresoras instaladas en el mismo puesto de trabajo en una se imprimen albaranes, en otra facturas y en la tecera el resto de documentos. Si guardo el nombre de las impresoras que me interesan cuando genero la impresión la creo con la clausula PRINT oPrn NAME "XXXX" TO cPrinter y en esa variable le digo a que impresora quiero la impresión.
Lo que no comprendo es porque cuando utilizo la funcion GetDefaultPrinter() si funciona pero si yo le doy el valor no funciona

Un saludo
miarcod
 
Posts: 199
Joined: Tue Oct 11, 2005 2:17 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], Willi Quintana and 34 guests