Descrição:
Posso impedir que uma tela seja aberta por mais de um usuário ao mesmo tempo?
Solução:
Sim. A lógica completa deve passar pelo Servidor e está dividida em seis scripts (os nomes dos tags a seguir são apenas para fins elucidativos):
1. Ao abrir a tela inicial, guarde o nome do computador no valor de um tag do Viewer chamado PCName, utilizando a propriedade ComputerName do objeto WshNetwork (consultar o Guia de Referência do VBScript para maiores informações). Por exemplo:
set WshNetwork = CreateObject(“WScript.Network”)
Application.Item(“PCName”).Value = WshNetwork.ComputerName
2. No evento disparado pelo usuário com o propósito de abrir a tela (Click de um botão, por exemplo), passe o valor do tag PCName para um tag do Servidor chamado AccessRequest.
3. Crie um evento OnValueChanged no tag AccessRequest para verificar o valor do tag booleano ScreenStatus. Se ele for igual a TRUE, o valor do tag AccessRequest (que contém o nome do computador onde está rodando o Viewer) deve ser passado para o tag AccessDenied. Se ele for igual a FALSE, o valor do tag AccessRequest deve ser passado para outro tag do Servidor chamado AccessOK, e o valor do tag ScreenStatus deve ser alterado para TRUE.
4. Na tela inicial, deve existir um script para mostrar uma caixa de mensagem quando o tag AccessDenied alterar o valor (informando acesso negado para o usuário).
5. Também na tela inicial, deve existir outro script para abrir a tela de comando desejada quando o tag AccessOK alterar o valor (indica que o acesso está liberado).
6. Por fim, ao fechar a tela de comando, o valor dos tags ScreenStatus e AccessOK deve ser reconfigurado.
NOTA: Aplicação exemplo em anexo.