Fechar aplicação

Como faço para finalizar a aplicação que está em execução ao clicar em um botão ou ao pressionar uma determinada combinação de teclas. Precisaria que isso acontecesse somente quando administradores estiverem logados.

Obrigado.

Diego,

Você pode executar o E3Admin com a opção ‘-stop’ através do método ‘ExecuteExternalApp’. Por exemplo:

Application.ExecuteExternalApp "C:\Program Files (x86)\Elipse Software\Elipse E3\Bin\E3Admin.exe", "-stop", "", 0

Só tem que tomar cuidado para não fazer isso nos Viewers remotos. Para isso você pode guardar o nome do computador onde está rodando o domínio em um tag interno do servidor de dados. Por exemplo:

Sub Dados1_OnStartRunning()
	Item("PCServerName").Value = GetComputerName()
End Sub

E o nome do computador onde está rodando o Viewer em um tag interno do Viewer. Por exemplo:

Sub Viewer_OnStartRunning()
	Item("PCViewerName").Value = GetComputerName()
End Sub

Assim, você pode comparar o nome guardado nos dois tags antes de executar o comando. Por exemplo:

Sub CommandButton1_Click()
   If Application.Item("PCViewerName").Value = Application.GetObject("Dados1.PCServerName").Value then
      'Se o usuário pertencer ao grupo Administradores
      If Application.IsUserMemberOfGroup("Administradores") then
         If MsgBox("Você realmente deseja parar o domínio agora?", vbYesNo) = vbYes then
            'Para o domínio
            Application.ExecuteExternalApp "C:\Program Files\Elipse Software\Elipse E3\Bin\E3Admin.exe", "-stop", "", 0
            'Fecha o Viewer
            Application.Exit()
         End If
      Else
         MsgBox "Você precisa ser administrador para realizar esta operação."
      End If
   Else
      MsgBox "Não é possível parar o domínio remotamente."
   End If
End Sub

Para poder parar o domínio a partir do Viewer estando remoto ou não, pode ser usado o método “Run” do objeto WScript, conforme abaixo:

Set WshShell = CreateObject(“WScript.Shell”)
Call WshShell.Run(“C:\Progra~2\Elipse~1\Elipse~1\Bin\E3Admin.exe -stop”, 9, false)

Neste exemplo, o endereço do E3Admin. exe é passado de forma a não conter espaços.

Para usar esta forma, a sugestão é criar um tag interno com o valor do tipo Boolean e, no código sugerido pelo Paulo Gustavo na linha onde seria chamado o método “ExecuteExternalApp” você atribuiria o valor True para o tag interno, que teria o código que passei em um evento que verifica quando o Value é verdadeiro.

Espero ter ajudado.