Hidden Start: Colocar aplicativos console rodando escondido.
Moderador: Moderadores
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Hidden Start: Colocar aplicativos console rodando escondido.
Amiguinhos.
Veja Neste Link o utilitário que permite que aplicações console e batch-files rodem realmente escondidos.
Veja Neste Link o utilitário que permite que aplicações console e batch-files rodem realmente escondidos.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Hidden Start: Colocar aplicativos console rodando escondido.
Achei isso o máximo, parabéns Rochinha.
lugab
Hidden Start: Colocar aplicativos console rodando escondido.
Se voce usa WVT. tem a função:
Esconde a janela console.
wvt_hide()
Mostra a janela console.
wvt_Show()
SetForegroundWindow( Wvt_GetWindowHandle() )
Esconde a janela console.
wvt_hide()
Mostra a janela console.
wvt_Show()
SetForegroundWindow( Wvt_GetWindowHandle() )
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Hidden Start: Colocar aplicativos console rodando escondido.
Olá Pessoal,
Nos casos de precisar chamar um processo filho a partir da aplicação, em muitos casos também pode se usar assim diretamente pelo [x]Harbour com arquivos .Exe, Com e Bat:Se você enviar os parâmetros no lugar de Nil, precisa fechar o Handler retornado com FClose():
Se o segundo parâmetro em HB_ProcessValue() ou em HB_CloseProcess(), for .T., fica aguardando o processo ser encerrado.
Se o segundo parâmetro em Hb_OpenProcess() for omitido ou .F., abre o processo em primeiro plano, não em background.
Nos casos de precisar chamar um processo filho a partir da aplicação, em muitos casos também pode se usar assim diretamente pelo [x]Harbour com arquivos .Exe, Com e Bat:
Código: Selecionar todos
Function Main()
nHandler := Hb_OpenProcess( "cExecutável.Ext", Nil, Nil, Nil, .T. )
Inkey( 0 ) // verifique no gerenciador de tarefas...
If HB_ProcessValue( nHandler, .F. ) // verifica se oprocesso está ativo
HB_CloseProcess( nHandler, .F. ) // encerra o processo
EndIf
Return NilCódigo: Selecionar todos
Function Main()
nHandler := Hb_OpenProcess( "cExecutável.Ext", nHadler1, nHadler2, nHadler3, .T. )
Inkey( 0 ) // verifique no gerenciador de tarefas...
If HB_ProcessValue( nHandler, .F. ) // verifica se oprocesso está ativo
HB_CloseProcess( nHandler, .F. ) // encerra o processo
EndIf
FClose( nHandler1 )
FClose( nHandler2 )
FClose( nHandler3 )
Return NilSe o segundo parâmetro em Hb_OpenProcess() for omitido ou .F., abre o processo em primeiro plano, não em background.
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)
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)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Hidden Start: Colocar aplicativos console rodando escondido.
Amiguinhos,
Jairo Maia
Estas funções são específicas do xHarbour?
Poderia dar um exemplo prático de uso destas funções?
Gostaria de entendê-las melhor. O Harbour tem muitas maravilhas que ainda desconheço.
Jairo Maia
Estas funções são específicas do xHarbour?
Poderia dar um exemplo prático de uso destas funções?
Gostaria de entendê-las melhor. O Harbour tem muitas maravilhas que ainda desconheço.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Hidden Start: Colocar aplicativos console rodando escondido.
Olá Rochicha,
Primeiro uma correção: Os parâmetros que substituem os Nils no exemplo acima, devem ser enviados por referências, ou seja, serem precedidas por "@" (arroba). E neste caso necessariamente deverão ser previamente declarados.
Estas funções são do xHarbour, e foram herdadas pelo Harbour, portanto funcionam com ambos.
O exemplo abaixo peguei no xHarbour Language Reference Guide. Para compilar com Harbour usar a lib xhb.lib.
Para que o exemplo funcione como está, o exemplo do processo filho deve ser compilado como: ChildProc.exe, ou claro, faça as alterações necessárias para outro nome. Veja que legal:
Processo Pai:
Processo Filho:
Para testar o processo filho rodando em background, altere a linha 12 do exemplo pai colocando o 5o. parâmetro como .T.:
Primeiro uma correção: Os parâmetros que substituem os Nils no exemplo acima, devem ser enviados por referências, ou seja, serem precedidas por "@" (arroba). E neste caso necessariamente deverão ser previamente declarados.
Estas funções são do xHarbour, e foram herdadas pelo Harbour, portanto funcionam com ambos.
O exemplo abaixo peguei no xHarbour Language Reference Guide. Para compilar com Harbour usar a lib xhb.lib.
Para que o exemplo funcione como está, o exemplo do processo filho deve ser compilado como: ChildProc.exe, ou claro, faça as alterações necessárias para outro nome. Veja que legal:
Processo Pai:
Código: Selecionar todos
// Este exemplo cria um processo pai que chama um processo filho.
// (O processo filho está no segundo exemplo)
PROCEDURE Main()
LOCAL cData := "Hello World"
LOCAL cEXE := "ChildProc.exe"
LOCAL nBytes, nChild, nError, nStdIN, nStdOUT, nStdERR
CLS
@ 2,2 Say "Abrindo o processo filho: " + cEXE
nChild := HB_OpenProcess( cEXE, @nStdIN, @nStdOUT, @nStdERR )
IF nChild < 0
? "Erro: ", FError()
QUIT
ENDIF
nReturn := FWrite( nStdIN, cData )
@ 3,2 Say "Enviando dados : " + Hb_NToS( nReturn )
@ 4,2 Say "Recebendo dados : "
cData := Space( 1000 )
nBytes := Fread( nStdOUT, @cData, Len(cData) )
?? Left( cData, nBytes )
@ 5,2 Say "Erro de leitura : "
cData := Space( 1000 )
nBytes := Fread( nStdERR, @cData, Len(cData) )
?? Left( cData, nBytes )
// Verifica se o processo filho finalizaou. Caso não aguarda...
@ 6,2 Say "Aguardando finalizacao : " +Hb_NToS( HB_ProcessValue( nChild ) )
FClose( nChild )
FClose( nStdIN )
FClose( nStdOUT )
FClose( nStdERR )
RETURNCódigo: Selecionar todos
// Este é o processo filho chamado pelo primeiro exemplo.
// Ambos devem ser compilados como executáveis separados.
// Definição dos padrões dos Handlers (controladores) de arquivos usados neste exemplo:
#define FH_STDIN 0
#define FH_STDOUT 1
#define FH_STDERR 2
#include "Fileio.ch"
#define BUFF_SIZE 1024
PROCEDURE Main
LOCAL nBytes, cBuffer, cData, nError
@ 6,2 Say "O Processo filho sera iniciado em 5 segundos"
Inkey( 5 )
@ 6,2 Say Space( 50 )
cBuffer := Space( BUFF_SIZE )
nBytes := FRead( FH_STDIN, @cBuffer, Len( cBuffer ) )
cBuffer := "Processo filho recebeu " + ;
LTrim( Str( nBytes) ) + ;
" bytes [" + Trim( cBuffer ) + "]"
nBytes := FWrite( FH_STDOUT, cBuffer, Len(cBuffer) )
nError := FError()
cBuffer := "Codigo do erro: " + LTrim( Str( nError ) )
nBytes := FWrite( FH_STDERR, cBuffer, Len(cBuffer) )
RETURNVeja que a mensagem que o processo filho será iniciado em 5 segundos não aparecerá. Se você colocar ao invés de Inkey( 5 ), um Inkey( 0 ), ou um alert(), o processo ficará aberto até que seja fechado pelo gerenciador de tarefas, pois você não tem acesso a ele.nChild := HB_OpenProcess( cEXE, @nStdIN, @nStdOUT, @nStdERR, .T. )
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)
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)
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Hidden Start: Colocar aplicativos console rodando escondido.
Amiguinho,
Valeu! vou estudar o exemplo. É um tanto interessante esta rotina, mesmo porque só usamos aquilo que necessitamos, mas os horizontes se abre quando conhecemos algo mais.
Valeu! vou estudar o exemplo. É um tanto interessante esta rotina, mesmo porque só usamos aquilo que necessitamos, mas os horizontes se abre quando conhecemos algo mais.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.

