No xharbour tem algo equivalente a HB_RUN() ?

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

Moderador: Moderadores

lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

No xharbour tem algo equivalente a HB_RUN() ?

Mensagem por lugab »

Pois é, amigos, estou precisando recompilar um "modo console" em xharbour e me deparei com essa necessidade.

Em harbour eu usava o HB-RUN() de forma perfeita, mas agora, usando o Xharbour to tendo q usar o RUN , mas ele abre janela preta no fundo, e ainda prende o PC até o fim da execução, defeitos q o HB_RUN() não apresenta...
lugab
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

No xharbour tem algo equivalente a HB_RUN() ?

Mensagem por Pablo César »

Este exemplo, parece que irá lhe servir: https://pctoledo.org/forum/viewto ... RUN#p75529
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

No xharbour tem algo equivalente a HB_RUN() ?

Mensagem por Imatech »

WinApi: ShellExecute()

Uso:

ShellExecute_Normal( cPrograma, cParametro_01, cParametro_02, cParametro_01 ) ou somente ShellExecute_Normal( cPrograma )

ShellExecute_Maximized( cPrograma, cParametro_01, cParametro_02, cParametro_01 ) ou somente ShellExecute_Maximized( cPrograma )

Código: Selecionar todos

#pragma BEGINDUMP

#include "hbapi.h"
#include <windows.h>
#include <shellapi.h>

HB_FUNC( SHELLEXECUTE_MAXIMIZED )
{
   ShellExecute( NULL,
                "OPEN",
                 hb_parc( 1 ),
                 hb_parc( 2 ),
                 hb_parc( 3 ),
                 SW_SHOWMAXIMIZED );
}

HB_FUNC( SHELLEXECUTE_NORMAL )
{
   ShellExecute( NULL,
                "OPEN",
                 hb_parc( 1 ),
                 hb_parc( 2 ),
                 hb_parc( 3 ),
                 SW_SHOWNORMAL );
}
#pragma ENDDUMP
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

No xharbour tem algo equivalente a HB_RUN() ?

Mensagem por lugab »

Ola amigos,

Eu já havia experimentado o shellexecute(), o myrun() e outras dicas aqui do fórum, porém essas funções "obedecem a forma de associação de arquivos instalada pelo windows de cada usuário, de forma que, muitas vezes mesmo a gente mandando executar, por exemplo, myrun("c:\wordpad.exe c:\arq.rtf") ou shellexecute("...") , ainda assim o windows realiza a tarefa através do "winword.exe", ignorando o wordpad.exe, devido a tal "aassociação".

Mesmo depois de ir na seção de "associação de arquivos", escolher "abrir com " um ARQUIVO.RTF e marcando "abrir sempre com wordpad", ainda assim algumas instalações só o abrem com winword.exe

Já o Hb_RUn() não segue essa "ordem associativa do windows" e executa mesmo o "wordpad.exe", porém, o meu problema é que preciso recompilar os fontes com o xharbour (em vez de harbour) devido a uma lib sem fontes, q só roda em xharbour


Ainda assim, obrigado, pela atenção
lugab
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

No xharbour tem algo equivalente a HB_RUN() ?

Mensagem por sygecom »

Olá Gabriel,
Tente usando esse abaixo:

Nota: Esse abre sem trancar o sistema

Código: Selecionar todos

***********************
FUNCTION MYRUN2( cRun )
***********************
Local hIn, hOut, nRet //, hProc
Local hProc := HB_OpenProcess( cRun , @hIn, @hOut, @hOut )

IF hProc < 0
   FClose( hProc )
   FClose( hIn )
   FClose( hOut )
   Return(.F.)
*   ShowMsg("Error: " + valtoprg(FError()))
ENDIF

nRet := HB_ProcessValue( hProc,.f. )
IF nRet > 0
   FClose( hProc )
   FClose( hIn )
   FClose( hOut )
   Return(.F.)
endif
FClose( hProc )
FClose( hIn )
FClose( hOut )
//hb_gcAll()
Return(.T.)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

No xharbour tem algo equivalente a HB_RUN() ?

Mensagem por lugab »

Obrigado, Leonardo...

Essa função funcionou bem com o xharbour..

Obrigado pela enésima vez
lugab
Responder