Um outro jeito, arroz-com-feijão, sem muita firula, mas que funciona. Local ou rede.
Os experts podem torcer o nariz, mas funciona.
Quando o Usuário1 acessa o Programa.EXE, o EXE abre um TXT qualquer em modo EXCLUSIVO.
Se o mesmo Usuário1 tentar abrir o EXE em outra instância, não vai conseguir. Acesso negado.
Se o Usuário2 tentar acessar o EXE aberto pelo 1, vai dar pau. Acesso negado.
Quando o Usuário1 fechar a sessão (ou faltar luz), o acesso ao TXT vai estar liberado pra quem chegar primeiro.
Simples assim.
É só incluir estas linhas no início do EXE (funciona em Harbour e Clipper):
Código: Selecionar todos
arq="c:\qualquerpasta\acesso.txt"
if !file(arq)
* se não existe, cria (usado apenas na primeira execução)
arqh=fcreate(arq,0)
if !arqh>0
* se não conseguir criar, aborta
? "Erro ao Iniciar Acesso"
quit
endi
* criou o arquivo
txt="Qualquer coisa"
txt_t=fwrite(arqh,txt) // escreve "Qualquer coisa" no arquivo criado
if !txt_t=len(txt)
* se não conseguir gravar, aborta
? "Erro ao Iniciar Acesso"
quit
endi
* gravou
fclose(arqh) // fecha
endi
janela=fopen(arq,18) // abre "qualquer.txt" em modo EXCLUSIVO, local ou rede
if !janela>0
* não conseguiu abrir exclusivo
? "Programa aberto em outra janela"
* ou "Tem outro usuário usando o EXE..."
quit
endi