Página 2 de 4

Executar programa sem janela (invisível)

Enviado: 05 Set 2012 11:45
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.

Executar programa sem janela (invisível)

Enviado: 05 Set 2012 13:29
por cjp
Desculpe, eu esqueci.

Será que existe um jeito de resolver isso? Alguém saberia me ajudar nisso?

Executar programa sem janela (invisível)

Enviado: 05 Set 2012 15:18
por alxsts
Olá Inácio.

Qual versão do Windows você está usando?

Executar programa sem janela (invisível)

Enviado: 05 Set 2012 20:30
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!

Executar programa sem janela (invisível)

Enviado: 05 Set 2012 22:02
por asimoes
Pessoal,

Tem um exemplo na pasta contrib\hbwin do harbour

testsvc.prg

Funcionando Ok.

Executar programa sem janela (invisível)

Enviado: 14 Set 2012 23:52
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?

Executar programa sem janela (invisível)

Enviado: 15 Set 2012 09:51
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).

Executar programa sem janela (invisível)

Enviado: 16 Set 2012 00:27
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.

Executar programa sem janela (invisível)

Enviado: 16 Set 2012 10:05
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

Executar programa sem janela (invisível)

Enviado: 17 Set 2012 01:23
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?

Executar programa sem janela (invisível)

Enviado: 17 Set 2012 07:49
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.

Executar programa sem janela (invisível)

Enviado: 19 Set 2012 00:59
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?

Executar programa sem janela (invisível)

Enviado: 20 Set 2012 09:49
por Jairo Maia
Olá cjp,

Você precisa acrescentar a lib hbwin para compilar.

Executar programa sem janela (invisível)

Enviado: 21 Set 2012 00:48
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.

Executar programa sem janela (invisível)

Enviado: 21 Set 2012 08:18
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