Página 1 de 1

ShellExecute()

Enviado: 04 Ago 2021 23:13
por JoséQuintas
Estou com o seguinte problema:

No cliente tem lá meu aplicativo instalado, tudo ok pra abrir PDFs, usando ShellExecute()
Se troco o aplicativo pra uma versão mais nova, isso não funciona mais.
Somente nessa instalação, Windows Server 2008 R2, Terminal Service.
Em qualquer outro lugar continua funcionando normalmente.
Alguma idéia?

ShellExecute()

Enviado: 05 Ago 2021 09:18
por Jairo Maia
Tente usar Win_Open_File( cPath, cFile ):

Código: Selecionar todos

/*
  Função em C# para abrir arquivos externos reconhecidos nas extensões do Windows.
  Exemplo de Uso: WIN_OPEN_FILE( cPath, cFile )
*/
#pragma BEGINDUMP
  #include "hbapi.h"
  #include <windows.h>
  HB_FUNC( WIN_OPEN_FILE )
  {
    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

ShellExecute()

Enviado: 05 Ago 2021 12:30
por Kapiaba
Mister Quintas, mostre o código, e o PATH, não é no C:\, é?

Abs.

ShellExecute()

Enviado: 05 Ago 2021 13:36
por JoséQuintas
O que o Jairo postou já tem na hbwin, é isso que eu uso.

Estou verificando agora outra possibilidade:
Pode ser que não foi gerado o PDF, por mudança no esquema das imagens.
Vou fazer uma revisão melhor em tudo, pra ver se não aprontei em outra parte.

ShellExecute()

Enviado: 05 Ago 2021 14:42
por JoséQuintas
Bingo....

Aquele erro do MySQL, de estouro de tamanho, impediu a atualização de resources.

Com a falta de atualização de resources, não atualizou as imagens.

E com a falta de atualização de imagens.... os PDFs não estavam sendo gerados !!!

Sem resource a harupdf não acusa erro, apenas não gera o PDF.

Então, o problema não era no shellexecute() mas sim na falta da imagem, que causava a falta do PDF.

Mesmo assim obrigado pela ajuda.

Ao Jairo:
ShellExecute() faz parte da hbwin, pelo menos no Harbour 3.4.
Verifique se tem no 3.2 hbmk2 -find shellexecute

Código: Selecionar todos

d:\fontes\integra>hbmk2 -find shellexecute
hbwin.hbc (instalado):
   wapi_ShellExecute()
addons\josequintas\libjpa.hbc (não instalado):
   shellexecuteopen()
   shellexecuteprint()
   shellexecuterunas()
Eu criei as alternativas pra não ter que ficar repetindo a mesma coisa em tudo que é fonte.

Código: Selecionar todos

FUNCTION ShellExecuteRunAs( cFileName, cParameters, cPath, nShow )

   wapi_ShellExecute( NIL, "RunAs", cFileName, cParameters, cPath, hb_DefaultValue( nShow, WIN_SW_SHOWNORMAL ) )

   RETURN NIL

FUNCTION ShellExecuteOpen( cFileName, cParameters, cPath, nShow )

   wapi_ShellExecute( Nil, "open", cFileName, cParameters, cPath, hb_DefaultValue( nShow, WIN_SW_SHOWNORMAL ) )

   RETURN NIL

FUNCTION ShellExecutePrint( cFileName, cParameters, cPath, nShow )

   wapi_ShellExecute( NIL, "print", cFileName, cParameters, cPath, hb_DefaultValue( nShow, WIN_SW_SHOWMINNOACTIVE ) )

   RETURN NIL
E é bom que assim você já deixa seu default sempre configurado, só altera se existir exceção.

ShellExecute()

Enviado: 05 Ago 2021 18:56
por Jairo Maia
Olá José,
JoséQuintas escreveu:Ao Jairo:
ShellExecute() faz parte da hbwin, pelo menos no Harbour 3.4.
Verifique se tem no 3.2 hbmk2 -find shellexecute
Tem sim... Tem a wapi_ShellExecute() e a wapi_ShellExecuteWait().

A primeira executa a função externa e o sistema fica liberado, a segunda executa e bloqueia o sistema até que a função executada seja fechada. Interessante...