Postagem em destaque
- Gerar link
- X
- Outros aplicativos
Protheus :: apconnxcontrol.ocx & PowerShell – Forçando a Desconexão de Usuário
Hoje veremos que usando o componente COM do protheus, podemos, através do Windows PowerShell Obter o estado de conexão dos usuários e forçar a sua desconexão.
Em primeiro lugar faz-se necessária a instalação do componente e, para isso, utilizaremos o programa regsvr32.exe que, normalmente, encontra-se em c:\WINDOWS\system32\regsvr32.exe.
Instalando o compomente:
Pelo console do DOS ou do PowerShell vá para o diretório onde está instalado o client do Protheus, no meu caso em: D:\totvs\p10\ndj\appclient.
Procure o arquivo apconnxcontrol.ocx, se não encontrar existe alguma coisa errada, “que não está certa”, na sua instalação (contate “Juan”).
Utilize agora o programa regsvr32.exe para instalar/registrar o componente. regsvr32.exe sem parâmetros irá mostrar a seguinte saída:
Vamos ao registro.
Feito o registro do componente vamos utiliza-lo. Usarei o PowerGui Script Editor para esse fim (poderá fazê-lo diretamente no console do PowerShell).
#Instanciando um novo objeto com |
1: #Instanciando um novo objeto com
2: $TObj = New-Object -Com apconnxcontrol.apconnx;
3:
4: #Definindo as variaveis para Conexao
5: $TEnv = "NDJ_01";
6: $TSrv = "127.0.0.1";
7: $TPort = 4321;
8: $TUser = "TOTVS";
9: $TPWD = "SIGA";
10:
11: #Atribuindo as variaveis para Conexao às Propriedades do objeto
12: $TObj.Environment = $TEnv;
13: $TObj.Password = $TPWD;
14: $TObj.Port = $TPort;
15: $TObj.Server = $TSrv;
16: $TObj.User = $TUser;
17:
18: #Conectando
19: $TObj.Connect();
Se tudo OK, a última saída do console será: True
Vamos agora ver com o que podemos brincar. Obtendos os Métodos e Propriedades do Objeto COM:
$TObj | Get-Member -MemberType Properties |
A saída do console para as propriedades:
PS C:\Documents and Settings\marinaldo.jesus.NALDO-PC\Meus documentos> $TObj | Get-Member -MemberType Properties |
e, agora para os Métodos:
$TObj | Get-Member -MemberType Methods |
Name MemberType Definition |
Usando o Método UsersCount() para verificar o número de usuários conectados:
$TObj.UsersCount() |
PS C:\Documents and Settings\marinaldo.jesus.NALDO-PC\Meus documentos> $TObj.UsersCount();2 |
No exemplo, eu, via Protheus Remote e via PowerShell (através do PowerGui Script Editor). Vejamos agora, usando o Método GetUsers() , as informações dos usuários conectados:
$TObj.GetUsers(); |
PS C:\Documents and Settings\marinaldo.jesus.NALDO-PC\Meus documentos> $TObj.GetUsers();marinaldo.jesus;NALDO-PC;4764; |
Vamos Obter as informações de conexão para o usuário ‘marinaldo.jesus’ usando GetUserInfo(string, string, string, string) onde a saída da função anterior servirá como entrada para a função atual.
$TObj.GetUserInfo('marinaldo.jesus','NALDO-PC','4764',''); |
PS C:\Documents and Settings\marinaldo.jesus.NALDO-PC\Meus documentos> $TObj.GetUserInfo('marinaldo.jesus','NALDO-PC','4764',''); |
E vamos forçar a desconexão desse usuário com: DisconnectUser(string, string, string, string, bool)
$TObj.DisconnectUser('marinaldo.jesus','NALDO-PC','4764','',$true); |
PS C:\Documents and Settings\marinaldo.jesus.NALDO-PC\Meus documentos> $TObj.DisconnectUser('marinaldo.jesus','NALDO-PC','4764','',$true); |
Nesse Primeiro Exemplo, enviamos um Kill informando que é para aguardar pelo termino do Processamento
Já, passando o último parâmetro como $false, solicitamos a desconexão IMEDIATA.
$TObj.DisconnectUser('marinaldo.jesus','NALDO-PC','4764','',$false); |
Finalizando a Conexão com o Protheus : Disconnect()
$TObj.Disconnect() |
Lembrando que, para remover o registro do componente, basta executar regsvr32.exe com o parâmetro /u
D:\totvs\p10\ndj\appclient>regsvr32.exe /u apconnxcontrol.ocx |
[]s
иαldσ dj
- Gerar link
- X
- Outros aplicativos
Comentários
Postagens mais visitadas
BlackTDN :: RLeg ~ Desvendando a Função ParamBox
- Gerar link
- X
- Outros aplicativos
Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login
- Gerar link
- X
- Outros aplicativos
Cara, que artigo interessante, parabéns novamente...
ResponderExcluirQueria saber como descobre estes componentes... (lets share ?) hehe...
O NALDO EH INSANO, MANO.
ResponderExcluirAo tentar instanciar o objeto, me ocorria o seguinte erro:
ResponderExcluirPS C:\Windows\system32> $TObj = New-Object -Com APConnXControl.APConnX;
New-Object : Falha na recuperação de factory de classes COM do componente com CLSID {B1C965EB-64A4-4084-83D1-26902EF88DE5} devido ao seguinte erro: 80040154.
Em linha:1 caractere:20
+ $TObj = New-Object <<<< -Com APConnXControl.APConnX;
+ CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException
+ FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand
Descobri que é por que o OCX está em 32bits, e eu estava executando o PowerShell 64bits.
Se rodar do PowerShell 32 bits funciona normal. Agora vamos ver se a TOTVS libera uma versão 64bits também.
No Visual Studio 2017 acontece o mesmo problema do Arthur.
ResponderExcluirSe rodar no PS x86 funciona muito bem, mas ao tentar consumir este componente no Visual Studio acaba dando problema.