►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
asimoes, agora deu certo, muito obrigado, esta abrindo a tela para confirmar impressora e clicar no botao Imprimir, tem como imprimir sem passar por essa tela ?
FUNCTION Execute(cProgram, lEspera)
LOCAL oShell, lOk := .T., nStyle
hb_Default(@lEspera,.T.)
TRY
oShell:=WIN_OleCreateObject( "WScript.Shell" )
CATCH
TRY
oShell:=WIN_OleCreateObject( "WScript.Shell" )
CATCH
lOk := .F.
END
END
IF lOk
TRY
/*
intWindowStyle
Description
0 Hides the window and activates another window.
1 Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
2 Activates the window and displays it as a minimized window.
3 Activates the window and displays it as a maximized window.
4 Displays a window in its most recent size and position. The active window remains active.
5 Activates the window and displays it in its current size and position.
6 Minimizes the specified window and activates the next top-level window in the Z order.
7 Displays the window as a minimized window. The active window remains active.
8 Displays the window in its current state. The active window remains active.
9 Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.
10 Sets the show-state based on the state of the program that started the application.
*/
nStyle:=0
oShell:Run("%comspec% /c "+cProgram , nStyle, lEspera)
CATCH
Alert("Erro executando "+cProgram, "Erro")
lOk := .F.
END
oShell:=Nil
ENDIF
RETURN lOk
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
cProg:="rundll32.exe mshtml.dll,PrintHTML"
cPar1:="D:\Harbour\h-Banner\rotinas.html"
cPar2:=win_PrinterGetDefault()
*------------------------------------------------------------------
Executa a função execute como thread
hb_threadStart(@Execute(),cProg,cPar1,cPar2)
*------------------------------------------------------------------
* Procura a janela de diálogo de impressão do internet explorer
nJanela:=hwg_FindWindow(,"Imprimir")
*------------------------------------------------------------------
* Volta pra janela do sistema
wvg_SetForegroundWindow(hb_gtInfo( HB_GTI_WINHANDLE ))
hwg_SendMessage( hb_gtInfo( HB_GTI_WINHANDLE ),WM_SYSCOMMAND,SC_RESTORE,0)
*------------------------------------------------------------------
* Aguarda 1 segundo, é importante para funcionar o comando abaixo.
Inkey(1)
*------------------------------------------------------------------
*simula o enter na janela Imprimir
hwg_KEYB_EVENT( VK_RETURN )
*------------------------------------------------------------------
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
As soluções que eu apresentei não funcionam no xharbour.
Essa aqui iria simular um enter na janela Imprimir, o problema é que em xharbour até onde eu sei, thread não funciona 100%, a função hwg_KEYB_EVENT é da hwgui, mas pode pegar o código em c e usar no fonte, não seria problema.
hb_threadStart(@Execute(),cProg,cPar1,cPar2)
Inkey(1)
hwg_KEYB_EVENT( VK_RETURN )
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
Outras soluções que existem são pagas, não sei de uma free, teria que pesquisar na net.
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
Você pode converter o html para pdf e usar o sumatrapdf para imprimir.
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)
Na instalação escolhe uma outra pasta que não seja do windows, o que interessa está na pasta bin.
Já fiz um teste aqui, funciona.
Depois de convertido o html para pdf tem várias soluções para impressão, uma opção free é o sumatrapdf, tem exemplos aqui no fórum
►Harbour 3.x | Minigui xx-x | HwGui◄ Pense nas possibilidades abstraia as dificuldades. Não corrigir nossas falhas é o mesmo que cometer novos erros. A imaginação é mais importante que o conhecimento. (Albert Einstein)