Descrição:
É possível limitar, através de scripts, a quantidade de Viewers em uma aplicação desenvolvida em Elipse E3? Preciso que cada computador abra apenas um Viewer. Como os computadores da rede têm IP dinâmico, não posso utilizar os Grupos de Viewer nas Opções de Domínio
Solução:
O Viewer permite operar as aplicações residentes no servidor em qualquer computador com o programa executável Viewer (Windows XP, 2003, Vista e Windows 7) ou com um navegador de Internet. Em ambos os casos, não é necessário instalar a aplicação na máquina cliente; todos os componentes (Telas, Bibliotecas, controles ActiveX) serão baixados e registrados automaticamente.
Para limitar a quantidade de Viewers de um aplicação desenvolvida em Elipse E3 em um grupo de IPs, primeiramente deve-se acessar a janela de configuração do domínio (E3Admin -> Domínio -> Opções). Logo após, clique na aba Grupo de Viewers e selecione o grupo desejado; então, configure-o para que seja permitido abrir somente um Viewer.
O Elipse E3 não permite uma configuração que limite a quantidade de Viewers por IP dentro de um grupo. Sendo assim, seria necessário criar diversos grupos, apenas com um IP por grupo, e limitar quantidade de Viewers nestes grupos unitários.
Como o processo acima torna-se trabalhoso em um range muito grande de IPs, uma alternativa para este caso é verificar, via scripts, se um processo do Viewer já está sendo executado no computador. Caso positivo, fecha-se o novo Viewer por script.
Esta alternativa consome uma licença de Viewer, temporariamente, enquanto o script é executado e o Viewer é fechado.
O seguinte script deve ser feito no evento OnStartRunning do Viewer:
ProcessName = "E3Viewer.exe" Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\localhost\root\cimv2") Set results = objWMIService.ExecQuery(" Select * from Win32_Process where Name = '"& ProcessName &"'") If results.count >1 Then For each obj in results MsgBox "Já existe um Viewer aberto neste computador!" Application.Exit() Exit Sub Next End If
Apenas lembrando que nas versões mais atuais do Elipse que a 1a linha do script só funciona com:
ProcessName = “E3Viewer.exe”
E não mais como “Viewer.exe”