ShellExecute()

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ShellExecute()

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

ShellExecute()

Mensagem 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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

ShellExecute()

Mensagem por Kapiaba »

Mister Quintas, mostre o código, e o PATH, não é no C:\, é?

Abs.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ShellExecute()

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ShellExecute()

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

ShellExecute()

Mensagem 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...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Responder