Abrir CHM pelo ShellExecute

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Abrir CHM pelo ShellExecute

Mensagem 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
►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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Abrir CHM pelo ShellExecute

Mensagem 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
►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)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Abrir CHM pelo ShellExecute

Mensagem 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
►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)
BHS
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 16 Out 2007 12:01
Localização: SOROCABA/SP

Re: Abrir CHM pelo ShellExecute

Mensagem 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
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Abrir CHM pelo ShellExecute

Mensagem 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
►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)
BHS
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 16 Out 2007 12:01
Localização: SOROCABA/SP

Re: Abrir CHM pelo ShellExecute

Mensagem 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
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Abrir CHM pelo ShellExecute

Mensagem por asimoes »

Henrique,

Não tinha atentado para o comando null.

Mais uma dica valiosa.

[]´s
►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)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Abrir CHM pelo ShellExecute

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Re: Abrir CHM pelo ShellExecute

Mensagem 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.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Abrir CHM pelo ShellExecute

Mensagem por sygecom »

Se não me engano esta função esta na RTL.LIB, por acaso essa LIB esta linkanda ao seu projeto ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Euclides
Usuário Nível 3
Usuário Nível 3
Mensagens: 154
Registrado em: 12 Mai 2007 14:07
Localização: São Paulo, Capital

Re: Abrir CHM pelo ShellExecute

Mensagem 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
Responder