Página 1 de 1

Problema com win_OleCreateObject

Enviado: 12 Jul 2017 17:47
por rubens
Boa tarde...

Estou tendo um problema não sei bem se da win_OleCreateObject(). A mesma rotina compilo com harbour e funcionar beleza, quando compilo com a Minigui não funciona.
chega a carregar a win_OleCreateObject() mas quando entra no segundo Try que tem o oShell:Run() não funciona. Pula essa parte do Try entrando no Catch.
Alguem sabe se não funciona com a Minigui, ou estou fazendo algo errado?

Compilado em harbour funciona

Código: Selecionar todos

#include 'hbcompat.ch'
#include "hbgtinfo.ch"
#include "hbwin.ch"

REQUEST HB_GT_WVT_DEFAULT

Function Main (cPdfFile, lEspera)
	LOCAL oShell, lOk:=.T., nStyle
	Local cPath := hb_dirbase()
  	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
	     nStyle:=0
	     oShell:Run( cPATH+'sumatra\sumatrapdf.exe -print-to-default '+cPdfFile , nStyle, lEspera)
    	CATCH
     		lOk:=.F.
    	END
    	oShell:=Nil
  	ENDIF
RETURN lOk
Compilado na minigui como funcao não funciona, retorna .f.

Código: Selecionar todos

Function ImpPdf(cFilePdf, 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
	     nStyle:=0
	     oShell:Run( cPATH+'sumatra\sumatrapdf.exe -print-to-default '+cPdfFile , nStyle, lEspera)
	     MsgBox( 'Dentro do Run')
    	CATCH
     		lOk:=.F.
    	END
    	oShell:=Nil
  	ENDIF
RETURN lOk
Obrigado
Rubens

Problema com win_OleCreateObject

Enviado: 12 Jul 2017 18:04
por JoséQuintas
Acredite se quiser, o problema é sempre o Xharbour.

No seu fonte está acrescentando a lib de compatibilidade com Xharbour, já é um problema.
E se usar a função de OLE dentro dela, causa problemas de compatibilidade com win_OleCreateObject().
Fora isso, a minigui usa coisas pra Xharbour...

É por essa e outras que a LIB de compatibilidade com xHarbour está marcada pra ser excluída do Harbour 3.4.

Problema com win_OleCreateObject

Enviado: 12 Jul 2017 19:12
por Toledo
Rubens, na Minigui não precisa criar o Shell com win_OleCreateObject(), você pode usar direto o comando EXECUTE FILE.

Exemplo:

Código: Selecionar todos

execute file 'arquivo.pdf'

ou

Execute file ( cPATH+'sumatra\sumatrapdf.exe -print-to-default '+cPdfFile ) Wait
Abraços,

Problema com win_OleCreateObject

Enviado: 13 Jul 2017 00:01
por rubens
Então o "Erro" não tinha nada a ver com a coitada da win_OleCreateObject()..
Era erro de BIOS mesmo...
Tava recebendo:
Function ImpPdf(cFilePdf, lEspera) -> cFilePdf
e mandando imprimir:
cPdfFile
aí ia para o CATCH mesmo..
foi só corrigir e funcionou...

Agora foi bom que não conhecia o EXECUTE FILE bem mais prático...

Obrigado
Rubens