Página 1 de 1

No xharbour tem algo equivalente a HB_RUN() ?

Enviado: 29 Mai 2012 14:55
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...

No xharbour tem algo equivalente a HB_RUN() ?

Enviado: 29 Mai 2012 16:21
por Pablo César
Este exemplo, parece que irá lhe servir: https://pctoledo.org/forum/viewto ... RUN#p75529

No xharbour tem algo equivalente a HB_RUN() ?

Enviado: 29 Mai 2012 17:29
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

No xharbour tem algo equivalente a HB_RUN() ?

Enviado: 31 Mai 2012 00:12
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

No xharbour tem algo equivalente a HB_RUN() ?

Enviado: 02 Jun 2012 21:41
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.)

No xharbour tem algo equivalente a HB_RUN() ?

Enviado: 04 Jun 2012 12:23
por lugab
Obrigado, Leonardo...

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

Obrigado pela enésima vez