oribeiro Posted March 1, 2018 Report Share Posted March 1, 2018 Pessoal, Mudanças no comando: GetPrintDC() Eu sempre usei esse comando para permitir que o usuário trocasse a impressora que está como padrão dentro do sistema. O usuário selecionava uma nova impressora e enquanto ele estava com o sistema aberto ela é que era acionada. Agora com a versão FWH 18.01 ele não funciona mais porque ele abre a tela de seleção da impressora mas sem nenhum efeito sobre o sistema, ou seja, o sistema continua enviando para a impressora padrão definida no Windows. Alguém já lidou com isso? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 1, 2018 Report Share Posted March 1, 2018 Tente assim: // Modifica a Impressora Default do Windows FUNCTION DefaultPrinter() LOCAL nPrn, nRet // Abre a tela para a seleção da impressora /* GetPrintDC( GetActiveWindow() ) // Coloca a impressora selecionada como Default do Windows SetDefaultPrinter( PRNGETNAME() ) */ nRet := PrinterSetUp() nPrn := PrnGetName() IF( nRet # 0 ) // NADA A FAZER MUDA O DEFULT DA IMPRESSORA EM TEMPO REAL. SetDefaultPrinter( PRNGETNAME() ) // MUDA O DEFAULT DA IMPRESSORA MsgInfo( OemToAnsi( "Aten‡Æo Usu rio: " )+CRLF+ ; OemToAnsi( "Sua Impressora DEFAULT(PadrÆo) ‚: " )+CRLF+ ; ( "-> " + nPrn ), ; OemToAnsi( "Sua Impressora DEFAULT(PadrÆo) ‚... " ) ) sGetDefaultPrinter := GetDefaultPrinter() IF PrnStatus( sGetDefaultPrinter ) = 4096 // Verifica se SPOOLER esta desligado e tenta liga-lo MsgRun( sGetDefaultPrinter +": "+isprint( GetDefaultPrinter() ) + ; " ou Spooler Desligado.", "Status da Impressora", ; {|| WinExec( "NET START SPOOLER", 7 ) } ) ENDIF //? GetPrinter() ELSE MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ; OemToAnsi( "VERIFIQUE SUA IMPRESSORA SE ESTµ LIGADA. " )+CRLF+ ; OemToAnsi( "OU SE ESTµ INSTALADA CORRETAMENTE... " )+CRLF+ ; OemToAnsi( "TEM ALGUMA COISA ERRADA COM A IMPRESSORA?" )+CRLF+ ; OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ; OemToAnsi( "VERIFIQUE SUA IMPRESSORA SE ESTµ LIGADA. " ) ) RETURN( .F. ) ENDIF RETURN NIL Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 1, 2018 Author Report Share Posted March 1, 2018 João, Obrigado pela sua prontidão. Essa sua função é bem legal, mas o comando... SetDefaultPrinter( PRNGETNAME() ) // MUDA O DEFAULT DA IMPRESSORA ...muda a impressora DEFAULT do Windows e esse é o meu problema. Antes, a função GetPrintDC() mudava a impressora apenas dentro do sistema e não no windows. Existe algum modo de voltar a funcionar como antes? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 1, 2018 Report Share Posted March 1, 2018 Ai vc. tem que usar: PRINTERSETUP() ) Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 1, 2018 Author Report Share Posted March 1, 2018 Não notei diferença entre o PrinterSetup() e o GetPrintDC(). kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 1, 2018 Report Share Posted March 1, 2018 Ou eu estou doido, ou não estou entendendo o que vc. quer. PrinterSetup() você escolhe uma das impressoras instaladas, mas não mexe com a impressora padrão, mas vai imprimir na impressora escolhida, ao sair da impressão, a impressora DEFAULT volta ao normal, se é que entendi sua pergunta; Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 1, 2018 Author Report Share Posted March 1, 2018 Nessa nova versão do FWH, com PrinterSetup() ou GetPrintDC() eu seleciono uma nova impressora e quando eu imprimo ele vai para a impressora DEFAULT do Windows e não para a que eu acabei de selecionar. Antes ele funcionava exatamente como você disse, ele imprimia na impressora que eu selecionei num desses comandos. Agora, parece que esses comandos não fazem nada. Eu tive esse mesmo problema em 2008 mas não sei como resolvi. Risos Veja: http://forums.fivetechsupport.com/viewtopic.php?f=3&t=27403&hilit=GETPRINTDC Estava funcionando até instalar a FWH18.01 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 1, 2018 Report Share Posted March 1, 2018 Como você faz com GETPRINDC(), assim? hDC := GetPrintDC( GetActiveWindow() ) if hDC == 0 cImpressoras := prnGetname() MSGINFO("Impressão cancelada pelo usuário","..::Impressão") Return .f. endif Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 1, 2018 Author Report Share Posted March 1, 2018 É assim mesmo que eu uso esse comando. Eu tive esse problema mas voltou a funcionar depois que conversei com o Linares em 2008, só não me lembro o que foi alterado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 1, 2018 Report Share Posted March 1, 2018 Simples, verifique a PRINTER.PRG da versão anterior e a PRINTER.PRG da versão atual. O que você modificou na versão anterior, faça uma copia da PRINTER.PRG anterior para PRINTER.OLD e copie a PRINTER.PRG E RPREVIEW.PRG da versão nova para a pasta do sistema e veja se tem necessidade de modificar a nova PRINTER.PRG Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 1, 2018 Author Report Share Posted March 1, 2018 Valeu a dica. Apenas cancelei a linha 438 do PRINTER.PRG METHOD End() CLASS TPrinter if ::hDC != 0 if ! ::lMeta if ::lStarted EndDoc(::hDC) endif else Aeval(::aMeta,{|val| ferase(val) }) ::aMeta := {} ::hDCOut := 0 endif if ::nOrient != nil if ::nOrient == DMORIENT_PORTRAIT ::SetPortrait() else ::SetLandscape() endif endif // PrinterEnd() // 01/03/2018 (Oscar): Tirei essa linha para que ele mantenha a impressora selecionada no GetPrintDC() sem mudar a impressora Default do Windows. DeleteDC( ::hDC ) ::hDC := 0 endif if ::oFont != nil ::oFont:End() endif oPrinter := nil return nil kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted March 1, 2018 Report Share Posted March 1, 2018 Nóis é phoda né? kkkkkkkkkkkkkkkkkkkkkkkkkkkkk Quote Link to comment Share on other sites More sharing options...
oribeiro Posted March 1, 2018 Author Report Share Posted March 1, 2018 Muito obrigado. Voltou a funcionar como antes. Ufa! Postei essa alteração no FWH em inglês. Acompanhe essa discussão em http://forums.fivetechsupport.com/viewtopic.php?f=3&t=35329&p=210356#p210356 kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.