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() ?
Moderador: Moderadores
- Pablo César
- 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() ?
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.
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.
No xharbour tem algo equivalente a HB_RUN() ?
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 )
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
by: IMATECH
IMATION TECNOLOGIA
No xharbour tem algo equivalente a HB_RUN() ?
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
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
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
No xharbour tem algo equivalente a HB_RUN() ?
Olá Gabriel,
Tente usando esse abaixo:
Nota: Esse abre sem trancar o sistema
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
xHarbour.org + Hwgui + PostgreSql
No xharbour tem algo equivalente a HB_RUN() ?
Obrigado, Leonardo...
Essa função funcionou bem com o xharbour..
Obrigado pela enésima vez
Essa função funcionou bem com o xharbour..
Obrigado pela enésima vez
lugab

