Página 1 de 1

Abrir CHM pelo ShellExecute

Enviado: 04 Abr 2009 23:48
por asimoes
Amigos,

Eu criei um manual do sistema pelo winchm, como eu faço para abrir este arquivo, ou melhor executar este arquivo pelo xharbour.

O nome dele é matconst.chm.

Pelo comando run ele abre mas fica uma chamada do cmd ao fundo, como seria pelo ShellExecute.

[]´s

Re: Abrir CHM pelo ShellExecute

Enviado: 05 Abr 2009 10:04
por asimoes
Amigos,

Notei que a função ShellExecute está em conflito nas bibliotecas hwgui e what32, explico:

Usando somente a what32:

ShellExecute(0,nil,'matconst.chm',nil,nil,1) o chm é exibido.

Agora usando as duas bibliotecas : what32 e hwgui

A função ShellExecute que tem também na hwgui abre o explorer.

Detalhe usando o mesmo comando acima.

Alguém já viu isso?

[]´s

Re: Abrir CHM pelo ShellExecute

Enviado: 05 Abr 2009 10:18
por asimoes
Amigos,

Já resolvi,

Usando somente a what32

ShellExecute(0,nil,'matconst.chm',nil,nil,1)

Usando what32 + hwgui:

ShellExecute('matconst.chm',,,0) //1

Os parâmetros são diferentes em ambas bibliotecas.

[]´s

Re: Abrir CHM pelo ShellExecute

Enviado: 06 Abr 2009 09:59
por BHS
bom dia


como posso fazer para que não apareça a tela de CMD quando uso um comando run ou o Shellexecute

pois tenho no sistema que chamar um executavel para a NFe e toda vez aparece a tela de CMD, e o usuario reclama um pouco (com razão rss)

se alguem puder ajudar eu agradeço

OBS: uso gtwvt. uso o comando shellexecute para chamar a calculadora por exemplo

Obrigado

Henrique

Re: Abrir CHM pelo ShellExecute

Enviado: 06 Abr 2009 16:01
por asimoes
Henrique,

Esta foi a minha preocupação também.

O exemplo acima funcionou, você também pode usar o winexec, tem que compilar junto a what32.

O comando run com certeza vai aparece a tela do dos no fundo. Estão as opções serial o shellexecute ou winexec

Outro detalhe que esqueci de mencionar, você pode criar uma bat por exemplo:

Na bat:

visualizar.bat
meuarquivo.chm

Chamada:

WinExec("visualizar.bat") Também funciona.


[]´s

Re: Abrir CHM pelo ShellExecute

Enviado: 06 Abr 2009 19:31
por BHS
bom

obrigado pela resposta mas eu consegui de outra maneira.

Utilizei a função myrun()

Código: Selecionar todos

****************************************************** 
function MYRUN( cComando ) 
****************************************************** 

local oShell, RET 

oShell := CreateObject( "WScript.Shell" ) 
RET := oShell:Run( "%comspec% /c " + cComando, 0, .T. ) 
oShell := NIL 

return iif( RET = 0, .T., .F. ) 
coloquei ela no final do prg
e depois é só chamar a função
Myrun('nfeexp.exe -cancelar &id &prot "&mot" > null')

No meu caso funcionou 100% sem abrir uma tela DOS

Fica registrado aí pro pessoal

Henrique

Re: Abrir CHM pelo ShellExecute

Enviado: 08 Abr 2009 07:43
por asimoes
Henrique,

Não tinha atentado para o comando null.

Mais uma dica valiosa.

[]´s

Re: Abrir CHM pelo ShellExecute

Enviado: 11 Abr 2009 14:47
por sygecom
Ou:

Código: Selecionar todos

FUNCTION Abre_arquivo( cHelpFile )
   LOCAL nRet, cPath, cFileName, cFileExt
   HB_FNameSplit( cHelpFile, @cPath, @cFileName, @cFileExt )
   nRet := _OpenHelpFile( cPath, cHelpFile )
RETURN nRet

#pragma BEGINDUMP

   #pragma comment( lib, "shell32.lib" )
   #include "hbapi.h"
   #include <windows.h>
   HB_FUNC( _OPENHELPFILE )
   {
     HINSTANCE hInst;
     LPCTSTR lpPath = (LPTSTR) hb_parc( 1 );
     LPCTSTR lpHelpFile = (LPTSTR) hb_parc( 2 );
     hInst = ShellExecute( 0, "open", lpHelpFile, 0, lpPath, SW_SHOW );
     hb_retnl( (LONG) hInst );
     return;
   }
#pragma ENDDUMP

Re: Abrir CHM pelo ShellExecute

Enviado: 20 Abr 2009 18:48
por clodoaldomonteiro
Amigos!

A função myrun() tá mostando os seguintes erros em algun computadoes meus:
- Ponto e enrada não encontado:
- Não foi possível loclizar o pnto de entada do procedimento DoOpenPipeStream na biblioteca de vínculo dinâmico ScrRun.dll, numa janelnha windows.

... e no sistema não encotra a função "toleauto:new(315)", createobject(69).

O sistema do pc era Windows XP e o compilador é xHarbour 1.00 simplex.

Grato pela atenção.

Re: Abrir CHM pelo ShellExecute

Enviado: 20 Abr 2009 23:17
por sygecom
Se não me engano esta função esta na RTL.LIB, por acaso essa LIB esta linkanda ao seu projeto ?

Re: Abrir CHM pelo ShellExecute

Enviado: 21 Abr 2009 11:11
por Euclides
Olá,
Existe na pasta \Windows, o HH.EXE que executa direitingo os arquivos .CHM com a vantagem de abrir também arquivos .htm e .html.
Pelo FiveWin eu uso assim:
WinExec("HH -800 ajuda.chm", 1) // -800 é a largura da janela
ShellExecute( GetActiveWindow(), "Open", "HH.EXE", "ajuda.chm", nil, 1)
Deve ter equivalências no Harbour/xHarbour
T+
Euclides