Executar programa sem janela (invisível)

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

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Executar programa sem janela (invisível)

Mensagem por alxsts »

Olá!

É, infelizmente não está funcionando. Gerei uma versão e pelo debugger verifiquei que o problema é na função IsServiceRunning(), que sempre retorna falso. Desse modo, o programa nunca entra no loop.

Continuo buscando soluções ou alternativas.

Habitue-se a utilizar a tag Code quando for postar código. O efeito é outro e evita que a moderação edite o teu post. Saiba como usar.
[]´s
Alexandre Santos (AlxSts)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Desculpe, eu esqueci.

Será que existe um jeito de resolver isso? Alguém saberia me ajudar nisso?
Inacio de Carvalho Neto
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Executar programa sem janela (invisível)

Mensagem por alxsts »

Olá Inácio.

Qual versão do Windows você está usando?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Dr.Microso
Usuário Nível 3
Usuário Nível 3
Mensagens: 173
Registrado em: 12 Jan 2009 21:26
Localização: Belo Horizonte, MG

Executar programa sem janela (invisível)

Mensagem por Dr.Microso »

Olá, saudações!
cjp escreveu:Eu queria rodar algumas funções simples, que não dependem da intervenção do usuário, e daí o ideal é que ele não abrisse nenhuma janela, ficasse invisível. Assim, não atrapalha o usuário em nada, e também não corre o risco de o usuário fechar o programa indevidamente.
É possível?
Acho que sua solução está muito fácil de implementar em Harbour, mas preciso de mais foco/dados...
Você já "tem uma pá" de sugestões e nem sabem direito o que de fato pretende...

O que seria "queria rodar algumas funções simples"? Que tipo de funções simples?
Essas funções estariam envolvidas em monitoramento contínuo do aplicativo, de uma pasta, de arquivos, do registro?
Seria um aplicativo de suporte, um trojan, um keylogger, backdoor, worm?

Um abraço!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Executar programa sem janela (invisível)

Mensagem por asimoes »

Pessoal,

Tem um exemplo na pasta contrib\hbwin do harbour

testsvc.prg

Funcionando Ok.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Meu caro, eu sei sim o que pretendo. Como disse são funções bem simples, pequenas alterações em bases de dados, envio de e-mails. Não são trojans, keylogger, backdoor, worm (eu nem sei bem o que é isso). São funções que não dependem de intervenção do usuário, para manutenção do programa, tal como atualização de índices etc.

Meu Windows é o XP (na minha máquina principal e na maioria das máquinas dos usuários) e o 7 (no meu notebook e em alguns usuários).

Eu não achei esse arquivo testsvc.prg. Eu uso o Xharbour, não o Xharbour. Ele também tem esse arquivo?
Inacio de Carvalho Neto
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á

Executar programa sem janela (invisível)

Mensagem por Pablo César »

São funções que não dependem de intervenção do usuário, para manutenção do programa, tal como atualização de índices etc
Como este exemplo (atualização de índices) e como outros mencionados como "fazer algumas alterações em algumas bases de dados, enviar um e-mail (usando o sendmail)", tudo deve ser estudando, analisado as vantagens e as deficiências que poderiam causar "funções/rotinas" externas ao programa e suas possíveis falhas. É isso que os colegas estão tentando lhe dizer. Gostaria que você entenda que as vezes para algo que parece complicado há uma solução bem simples e que nós não sabemos exatamente o que precisa ser feito. Falo tudo isto com o intuito que você entenda os questionamentos dos colegas e você resolver o seu problema de forma objetiva. Bom vamos caso a caso então:

1. Para o caso de atualização de índices, na minha opinião, você não deveria buscar uma solução externa para manter essa rotina funcionando de forma independente. Isto porque para indexar os arquivos precisa de que os arquivos estejam fechados e isso em uma rede, é algo um tanto incomodo de fazer a todos fecharem para manutenção. Tem que se estudar a viabilidade do negócio. O bom desenvolvedor (analista/programador), deveria pensar que quanto menos o usuário tiver que fazer pelo sistema: melhor e sim quanto mais o sistema fizer pelo usuário muito melhor. Num sistema que eu tenho, a indexação funciona dentro do próprio sistema. Ele é acionado após o acionamento do protetor de telas. Então, sabendo que não há usuário algum com arquivos abertos, pode ser realizado a indexação. Isso permitiu sempre manter os índices longe de corrupções e à sua vez essa rotina nunca exigiu intervenção do usuário e nem mesmo a saída deles do sistema. Só que para lograr isso, temos a necessidade de conhecer o sistema como funciona e quais os elementos que contamos. Pois precisará haver o bloqueio dos usuários no momento em que essa rotina está sendo executada. Para isso, requere-se a verificação de uso dos arquivos de dados e dessa forma gerenciar e mostrar em tela para o usuário o que está sendo executado. E isso demanda trabalho.

2. Para o caso de fazer algumas alterações em algumas bases de dados, enviar um e-mail também precisará controlar não somente com a abertura de arquivos como dos registros e que se pensa alterar, tendo ainda em conta a rotina de indexação. Por isso tudo deve ser analisado em conjunto e de forma sistemática. Sem saber que tipo de alterações no dados seriam necessários, poderia ainda antecipar que esta prática é um tanto incomum quando é feita desde um aplicativo externo ao sistema. Poderia se pesar na possibilidade de gravar em arquivos secundários ou temporários em paralelo ao sistema que estejam sendo alimentado pelo sistema e processados pelo programa externo.

Uma outra sugestão, que talvez poderia você colocar em prática seria você colocar um programa no servidor de arquivos mas tudo deve ser condicionado a aberturas dos bancos de dados e tratamento de registros de qualquer forma...
Eu não achei esse arquivo testsvc.prg. Eu uso o Xharbour, não o Xharbour.
Não deu pra entender, xHarbour ou xHarbour ? Esse arquivo está na pasta do contrib do Harbour (na subpasta hbwin\tests precisamente) e você pode baixar o módulo SRC (que são os fontes, o source codes do Harbour). Nesta página, você encontra o source: http://sourceforge.net/projects/harbour-project/files/. Outro conselho, se você utiliza xHarbour: eu pensaria em mudar para Harbour, pois isso não encarece, pelo contrário você irá ganhar mais recursos. É mais ou menos como insistir numa versão antiga do Clipper e não atualizar-se (essa é a minha opinião).
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.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Meu caro,

Em primeiro lugar, muito obrigado pela sua resposta e pela disponibilidade em ajudar.

Em segundo lugar, desculpe-me pelo erro na escrita. Quis dizer que uso o xHarbour, não o Harbour. Acabei escrevendo errado e gerando confusão. Peço desculpas.

Em terceiro lugar, esclareço que as funções que vou rodar nesse programa externo já são rodadas assim, sem nenhum problema. A única coisa que estou buscando é omitir a janela desse programa externo, para evitar qualquer intervenção do usuário. O programa não roda em rede, e o problema da utilização das bases de dados, coisa bastante rápida, já é resolvida no próprio programa. Esse programa externo roda rapidamente, não gerando qualquer inconveniente, inclusive na atualização de índices. Eu realmente só pretendo ocultar a janela.

Em quarto lugar, não achei o arquivo testsvc.prg na versão que baixei no link que vc mencionou. Pode ser que eu tenha feito algo errado, mas no link constam várias versões para baixar. Usei o harbour-3.0.0-src.zip. Na pasta tests do zip, tem vários arquivos .prg, menos este testsvc.prg.

Em quinto lugar, quanto à utilização do Harbour, esclareço que não sou profissional da área; faço programas apenas para meu uso pessoal e de meus funcionários; coisa simples, de leigo. Comecei usando o Dbase, depois passei a usar o Clipper. Há uns 2 anos, me recomendaram o Harbour/xHarbour. Na época, alguém me disse que o xHarbour seria uma versão mais avançada do que o Harbour, que valia a pena começar já nele. Foi o que eu fiz e, em geral, ele sempre me serviu bem.

Agora é que eu fiquei sabendo que o Harbour é mais avançado que o xHarbour. Se vc me recomenda, eu certamente vou procurar me atualizar. Gostaria apenas de ter certeza de qual versão é a melhor para eu instalar e começar a usar, de preferência algo que não exija muita adaptação inicial nos meus prgs já feitos.

Alguns colegas do fórum já me recomendaram a minigui, ou outras libs gráficas. Até já tentei usá-las, mas não consegui. Tive algumas dificuldades na instalação e depois na compilação, e na época não consegui ajuda para resolver os problemas.

Por isso te pergunto: qual a versão (se possível incluindo a lib gráfica) é realmente a melhor para o meu caso (leigo sem muito tempo disponível para dedicação), que vai realmente me proporcional benefícios, sem que implique sérias modificações nos prgs já feitos em xHarbour? Existe algum tutorial de instalação e compilação que facilite o meu trabalho?

Mais uma vez reitero meus agradecimentos pela tua ajuda.
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Executar programa sem janela (invisível)

Mensagem por Jairo Maia »

Olá cjp,

Apenas para adiantar:

Indico a instalação da versão 3.0.0, ainda acho que é a mais estável. A versão 3.2 ainda há bugs a serem fixados. Baixe aqui o instalador da versão 3.0.0: Download harbour-3.0.0-win.exe (58.4 MB)

Após instalar, supondo que instale em C:, achará este arquivo em: C:\hb30\contrib\hbwin\tests
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Meu caro,

Baixei o arquivo do link indicado. Mas não consegui instalar. Executei os arquivos dos-make.exe e win-make.exe. Eles parecem instalar alguma coisa, mas não vi nada instalado, e não achei o arquivo nem a pasta hb30.

Também vi no arquivo install que é preciso ter o compilador do C instalado no path. É isso? Eu não tenho o compilador do C, nem sei como obtê-lo e instalá-lo.

Poderia me ajudar, por favor?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Executar programa sem janela (invisível)

Mensagem por Jairo Maia »

Olá cjp,
cjp escreveu:Executei os arquivos dos-make.exe e win-make.exe
Nada a ver. Aliás, nem sei do que se trata esses arquivos.

No link que passei, você vai baixar o arquivo harbour-3.0.0-win.exe. Basta duplo clique sobre ele e instalar. Aliás, instale no modo padrão, ou seja, basta ir clicando em Next nas janelas subsequentes.

Quando a instalação for concluída, o Harbour estará instalado na pasta hb30, e já estará no path o caminho c:\hb30\bin, onde está o compilador HBMK2.
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Desculpe, meu caro, eu estava baixando o arquivo .zip.

Baixei o arquivo correto e instalei, até aí sem problema.

Também vi o arquivo testsvc.prg, mas não o entendi bem. Tentei compilá-lo, mas não compila.

Fiz um programinha inicial de teste para compilar, funcionou.

Mas, ao tentar compilar uma função que eu já tenho, que compila normalmente no xharbour, dá uma série de erros, em funções que, ao que parece, são funções do sistema, não são funções que eu criei. Exemplos: hb_fun_eom, hb_fun_filedate, hb_fun_hb_cmdargargv, hb_fun_lastdayom, hb_fun_settime etc.

Vc poderia me ajudar com isto?
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Executar programa sem janela (invisível)

Mensagem por Jairo Maia »

Olá cjp,

Você precisa acrescentar a lib hbwin para compilar.
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

Executar programa sem janela (invisível)

Mensagem por cjp »

Ainda assim está dando erros na compilação.

Por favor, veja se estou fazendo certo:

hbmk2 tar2p comuns contabc hbwin.lib xclipper.lib

Os arquivos tar2p.prg, comuns.prg e contabc.prg são os arquivos do meu programa. Todos eles e também as libs hbwin.lib e xclipper.lib estão na pasta bin, onde está o hbmk2.exe.

Fiz exclusão de algumas funções onde estavam dando erros, para testar. E, ainda assim, está dando os seguintes erros:

Imagem

Por favor, me ajude.
Inacio de Carvalho Neto
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Executar programa sem janela (invisível)

Mensagem por Jairo Maia »

Olá cjp,

Para facilitar, sugiro o seguinte:

1- Se você ainda não criou, crie uma pasta para você colocar os arquivos PRGs do seu projeto, e também a lib xclipper.lib
2- mantenha a pasta bin somente com os arquivos do harbour
3- na pasta do seu projeto, crie o arquivo de compilação, por exemplo TAR2P.HBP
4- posicione-se na sua pasta, e digite: HBMK2 TAR2P

Arquivo TAR2P.HBP

Código: Selecionar todos

# coloque aqui suas libs, precedidas pela letra "l" (minúscula):
-lxhb
-lhbwin
-lxclipper

# coloque aqui os parâmetros de compilação:
-quiet
-oTAR2P.EXE

# coloque aqui seus arquivos PRGs:
TAR2P.PRG
COMUNS.PRG
CONTABC.PRG
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)
Trancado