Verificar se o programa já está sendo executado
Moderador: Moderadores
Essa questão de garantir uma única instância do programa na mesma máquina ou mesmo limitar uma certa quantidade de usuários num sistema em rede até parece aquela discussão sobre proteção de programa. São coisas diferentes, claro. Mas têm soluções semelhantes, sob certo aspecto.
Não quero adiantar nada, mas estou pesquisando a respeito de um recurso chamado named pipes, que permite esse tipo de comunicação através do protocolo de rede. Se der certo da forma como estou imaginando, não haveria mais qualquer tipo de problema com isso. Bastaria um pequeno programa servidor rodando no servidor da rede, que faria o papel de "mediador" entre as máquinas clientes, possibilitando até mesmo chat entre elas.
O que pega é o maldito Win98, que só tem unnamed pipes, que tem uma mecânica diferente.
Não quero adiantar nada, mas estou pesquisando a respeito de um recurso chamado named pipes, que permite esse tipo de comunicação através do protocolo de rede. Se der certo da forma como estou imaginando, não haveria mais qualquer tipo de problema com isso. Bastaria um pequeno programa servidor rodando no servidor da rede, que faria o papel de "mediador" entre as máquinas clientes, possibilitando até mesmo chat entre elas.
O que pega é o maldito Win98, que só tem unnamed pipes, que tem uma mecânica diferente.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno,
Cara, to ansioso pra conferir a função do Marcelo Clipper. Eu uso esse tréco do FOPEN() em todos os meus clientes com XP (e 98 e ME) e em nenhum caso nunca deu errado. Parece mentira, mas é 100% de acerto.
Então, antes de vc achar outra solução mais - digamos - técnica, deixa o Marcelo Clipper apresentar pra como ele usa o FOPEN(). Tem jeito?
(de qualquer forma, não lhe parece estranho a vc, Maligno, que o USE Exclusive funcione e o FOPEN() Exclusive não funcione? Ou são coisas diametralmente diferentes?)
Cara, to ansioso pra conferir a função do Marcelo Clipper. Eu uso esse tréco do FOPEN() em todos os meus clientes com XP (e 98 e ME) e em nenhum caso nunca deu errado. Parece mentira, mas é 100% de acerto.
Então, antes de vc achar outra solução mais - digamos - técnica, deixa o Marcelo Clipper apresentar pra como ele usa o FOPEN(). Tem jeito?
(de qualquer forma, não lhe parece estranho a vc, Maligno, que o USE Exclusive funcione e o FOPEN() Exclusive não funcione? Ou são coisas diametralmente diferentes?)
Calma! Eu não disse que vou fazer hoje.Eolo escreveu:Então, antes de vc achar outra solução mais - digamos - técnica, deixa o Marcelo Clipper apresentar pra como ele usa o FOPEN(). Tem jeito?
São diferentes, mas não diametralmente. Não tenho certeza disso, mas é bem provável que o Clipper, ao bloquear um DBF (apenas com a cláusula EXCLUSIVE), utilize a mesma API do DOS utilizada para a abertura em modo exclusivo pelo FOpen(). Logo, não deveria haver diferença alguma.(de qualquer forma, não lhe parece estranho a vc, Maligno, que o USE Exclusive funcione e o FOPEN() Exclusive não funcione? Ou são coisas diametralmente diferentes?)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Tô aqui, é que como tenho muito o que fazer não dá pra ficar o tempo todo postando, mas quando dá eu posto sim, a pelo menos 5 anos diga se de passagem.
Resolvi verificar mais cudadosamente a rotina que tinha criado, testei no Windows 98 e funcionou beleza, testei no XP não funcionou, como o Eolo afirmou que com ele funcionava resolvi pesquisar e descobri que realmente havia um erro, porém eu fui induzido a ele pelo NG do Clipper 5.0, no NG do Clipper 5.0 só existem 3 opções de modo de acesso, são elas :
0 - SOMENTE LEITURA
1 - SOMENTE GRAVAÇÃO
2 - LEITURA E GRAVAÇÃO
Já no NG do Clipper 5.2 existem mais 6 modos além desses, que são os parâmetros 0,16,32,48,64,64
Então mudei meu parâmetro que era 0 para 16 e realmente funcionou perfeitamente no XP. O estranho e que ajudou no erro é que com o parâmetro O no Windows 95/98/ME funciona e no XP não funciona, com XP e sua maldita NTVDM é cheio de frescura achei que fosse problema de imcompatibilidade ou de viadagem mesmo.
De qualquer forma a dica serve para quem usa o Clipper 5.0 ou 5.01.
Até logo.
Marcelo
Resolvi verificar mais cudadosamente a rotina que tinha criado, testei no Windows 98 e funcionou beleza, testei no XP não funcionou, como o Eolo afirmou que com ele funcionava resolvi pesquisar e descobri que realmente havia um erro, porém eu fui induzido a ele pelo NG do Clipper 5.0, no NG do Clipper 5.0 só existem 3 opções de modo de acesso, são elas :
0 - SOMENTE LEITURA
1 - SOMENTE GRAVAÇÃO
2 - LEITURA E GRAVAÇÃO
Já no NG do Clipper 5.2 existem mais 6 modos além desses, que são os parâmetros 0,16,32,48,64,64
Então mudei meu parâmetro que era 0 para 16 e realmente funcionou perfeitamente no XP. O estranho e que ajudou no erro é que com o parâmetro O no Windows 95/98/ME funciona e no XP não funciona, com XP e sua maldita NTVDM é cheio de frescura achei que fosse problema de imcompatibilidade ou de viadagem mesmo.
De qualquer forma a dica serve para quem usa o Clipper 5.0 ou 5.01.
Até logo.
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Que bom que foi esclarecido. Eu também tinha as minhas sérias dúvidas... primeiro pensei que fosse algum problema com os direitos do usuário na pasta que pudesse ser gravado em WIN XP.
Eu ainda mantenho a minha convicção que a idéia do Eolo de abrir através do FOPEN (RW) é melhor até agora, aliás eu tinha já elogiado anteriormente a idéia dele.
Não obtive resposta sobre a utilização do USE DBF e FOPEN FILE quanto a mémoria, mas acho também não precisamos provar nada sobre isso. E ainda a solução de abrir no próprio servidor em pasta diferentes (conforme o nome da estação), é uma boa saída para os casos de estações sem HD.
Eu ainda mantenho a minha convicção que a idéia do Eolo de abrir através do FOPEN (RW) é melhor até agora, aliás eu tinha já elogiado anteriormente a idéia dele.
Não obtive resposta sobre a utilização do USE DBF e FOPEN FILE quanto a mémoria, mas acho também não precisamos provar nada sobre isso. E ainda a solução de abrir no próprio servidor em pasta diferentes (conforme o nome da estação), é uma boa saída para os casos de estações sem HD.
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.
Não entendi muito bem sua dúvida. Qual o problema com a memória?Pablo César escreveu:E quanto à memória ocupada entre USE DBF e FOPEN FILE_NULO ?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Ele quer saber em qual dos casos há mais consumo de memória, eu acho que não faz diferença alguma, creio que o consumo deve ser o mesmo.
Até logo.
Marcelo
Até logo.
Marcelo
Editado pela última vez por Clipper em 30 Jun 2007 00:27, em um total de 1 vez.
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Ah, se for isso, concordo com você. Se fizer diferença deve ser pequena aponto de ser desprezível. Aliás, se a gente for se preocupar com coisas desse tipo, aquilo de mais importante acaba sempre ficando pra trás. Vê-se muito disso em OOP. Mas aí é um pouco diferente. Há situações em que essa preocupação se justifica. Mas nem sempre.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- Daiane
- Usuário Nível 3

- Mensagens: 122
- Registrado em: 28 Out 2014 16:19
- Localização: Feira de Santana - BA
Verificar se o programa já está sendo executado
Opa,estava querendo saber como eu poderia fazer isso,verificar se o executável ja esta sendo utilizado no terminal,e com ajuda de vocês consegui resolver,assim que o usuario estiver usando o programa e tentar abri-lo novamente o sistema não vai permitir.
Eu estava tendo problemas com duplicidade de código,pois o usuário abria dois ou mais executáveis,espero isso resolva.
Utilizei a forma do FOPEN e utilizo o windows 7 e funcionou bem. ainda não testei no XP,espero que funcione corretamente também,muitos de nossos clientes ainda usam XP.
Ótimo tópico de informações
Eu estava tendo problemas com duplicidade de código,pois o usuário abria dois ou mais executáveis,espero isso resolva.
Utilizei a forma do FOPEN e utilizo o windows 7 e funcionou bem. ainda não testei no XP,espero que funcione corretamente também,muitos de nossos clientes ainda usam XP.
Ótimo tópico de informações
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Verificar se o programa já está sendo executado
Bom dia Daiane, se a sua pergunta se referir a FiveWin for xHarbour, faça a pergunta no forum de FiveWin que eu respondo. Agora se Clipper modo console, ignore minha postagem. Obg. abs.
Verificar se o programa já está sendo executado
Eu usei (uso) isso, sem problemas, com o Clipper 52e rodando sob Win98, ME, XP e Win7.Utilizei a forma do FOPEN e utilizo o windows 7 e funcionou bem. ainda não testei no XP,espero que funcione corretamente também,muitos de nossos clientes ainda usam XP.
Aliás, acabei de testar no Win10 32. Funciona normal.
Em tempo: uso em modo console, mas não acredito que faça alguma diferença se houver ou não alguma interface gráfica. Afinal, é simplesmente abrir um arquivo qualquer em modo exclusivo... Aliás, o Nascimento usa o Harbour com uma LIB gráfica e passou a usar essa solução do FOPEN. Funciona perfeito.
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
Verificar se o programa já está sendo executado
Sim sim tanto no xp e no windows7 funcionando sem problemas
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina
clipper 5.3 /harbour/minigui
