UiPath Documentation
activities
latest
false
Importante :
A tradução automática foi aplicada parcialmente neste conteúdo. A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.
UiPath logo, featuring letters U and I in white

Atividades do UIAutomation

Última atualização 7 de abr de 2026

APIs de automação codificadas em terminais

UiPath.Terminal.Activities

API de fluxo de trabalho codificada para automatizar sessões de emulação de terminais. Fornece métodos para estabelecer conexões com o IBM 3270/5250, VT, HP, ANSI, Wyse e outros sistemas de terminais legados por meio de conexões do BlueZone, IBM PCOMM, Attachmate ou TCP/SSH diretas e, em seguida, interagir com a tela do terminal de forma programática.

Acessador de serviço: terminal (tipo ITerminalService) Pacote obrigatório: "UiPath.Terminal.Activities": "*" nas dependências do project.json

Namespaces Importados Automaticamente

Esses namespaces estão automaticamente disponíveis em fluxos de trabalho codificados quando esse pacote é instalado:

UiPath.Terminal
UiPath.Terminal.Data
UiPath.Terminal.Activities.API
UiPath.Terminal.Enums
UiPath.Terminal
UiPath.Terminal.Data
UiPath.Terminal.Activities.API
UiPath.Terminal.Enums

Visão Geral do Serviço

O serviço terminal fornece métodos de fábrica que abrem uma conexão de terminal e retornam um objeto TerminalConnection . O objeto de conexão é a superfície da API para todas as operações de terminais — leituras de tela, acesso a campos, envio de chaves e espera.

Esta é uma API baseada em conexão:

  1. Chame um método de serviço (GetConnection / GetSshConnection) para abrir e conectar.
  2. Use o TerminalConnection retornado para executar operações de terminal.
  3. Descarte a conexão quando concluída (ou use uma instrução using ).

No modo de fluxo de trabalho codificado, todos os métodos TerminalConnection geram TerminalConnectionException em caso de falha em vez de retornar códigos de erro. Isso significa que você não precisa verificar valores de retorno — apenas lidar com exceções.

Métodos de conexão

TerminalConnection GetConnection(string connectionString)

Abre uma conexão de terminal usando uma string de conexão serializada. A string de conexão codifica o tipo de provedor, host, porta, protocolo e outras configurações. Use a caixa de diálogo Configurações de conexão da atividade Terminal Session XAML para gerar uma string válida.

Parâmetros:

  • connectionString (string) — String de conexão serializada. Exemplo: obtido configurando uma atividade Terminal Session e copiando o valor da propriedade ConnectionString .

Retornos: TerminalConnection — Uma sessão de terminal aberta e conectada. Implementa IDisposable; use dentro de uma instrução using .

Gera: TerminalConnectionException se a conexão não puder ser estabelecida dentro do tempo limite.

TerminalConnection GetConnection(ConnectionData connectionData)

Abre uma conexão de terminal usando um objeto ConnectionData , permitindo a configuração programática sem uma string de conexão serializada.

Parâmetros:

  • connectionData (ConnectionData) — Objeto de configuração que especifica as configurações de provedor, host, porta, protocolo e emulação.

Retornos: TerminalConnection — Uma sessão de terminal aberta e conectada.

Gera: TerminalConnectionException se a conexão não puder ser estabelecida.

TerminalConnection GetSshConnection(ConnectionData connectionData, string sshUser, SecureString sshPassword)

Abre uma conexão de terminal SSH com credenciais explícitas. O connectionData deve especificar ProviderType = UiPathNew e ConnectionProtocol = SSH.

Parâmetros:

  • connectionData (ConnectionData) — Configuração de conexão. Deve ter ProviderType = TerminalProviderType.UiPathNew e ConnectionProtocol = CommunicationType.SSH.
  • sshUser (string) — Nome de usuário do SSH.
  • sshPassword (SecureString) — Senha do SSH. Use uma variável SecureString (por exemplo, de Obter credencial) para evitar a exposição de texto simples.

Retornos: TerminalConnection — Uma sessão do terminal SSH aberta e conectada.

Gera: TerminalConnectionException se a conexão falhar, ou ArgumentException se ProviderType ou ConnectionProtocol for inválido.

ConexãoDoTerminal

TerminalConnection é o identificador retornado por todos os métodos de serviço. Ele fornece todas as operações de interação de terminais e implementa IDisposable.

Observação:

Esse tipo implementa IDisposable. Sempre use dentro de uma instrução using ou chame Dispose() / Shutdown() explicitamente. Descartar desconecta a sessão e encerra quaisquer processos do host.

Propriedades

PropriedadeTipoDescription
Connectedbooltrue se a sessão estiver conectada ao host no momento.
ConnectionStringstringA string de conexão serializada usada para estabelecer essa conexão.
DefaultCmdOptionsCommandOptionsAs opções de tempo limite e modo de espera padrão se aplicam a todas as operações quando não são explicitamente substituídas.

Events

EventoDescription
TerminalScreenChangedGerado quando o conteúdo da tela do terminal é alterado.
TerminalFieldChangedGerado quando um valor de campo é alterado.
TerminalCursorChangedGerado quando a posição do cursor muda.
TerminalConnectionChangedGerado quando o status da conexão é alterado (por exemplo, conectar/desconectar).
TerminalErrorRaisedGerado quando um erro de terminal ocorre de forma assíncrona.

Métodos de leitura de tela

TerminalResultCode GetText(out string text, CommandOptions options = null)

Lê todo o conteúdo de texto visível da tela do terminal.

Parâmetros:

  • text (out string) — Recebe o texto em tela cheia.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera. O padrão é DefaultCmdOptions.

Retorno: TerminalResultCode.Success (ou gera TerminalConnectionException em caso de falha no modo de fluxo de trabalho codificado).

TerminalResultCode GetTextAtPosition(TerminalField criteria, int? length, out string text, CommandOptions options = null)

Lê o texto da tela a partir da posição definida por criteria. Opcionalmente limita o número de caracteres lidos.

Parâmetros:

  • criteria (TerminalField) — Define a posição inicial por meio de RowStart / ColStart.
  • length (int?, opcional) — Número de caracteres a serem lidos. null lê até o final da linha.
  • text (out string) — Recebe o texto lido da posição.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode GetScreenArea(TerminalField criteria, out string text, CommandOptions options = null)

Lê o texto de uma região retângulo da tela definida por criteria.

Parâmetros:

  • criteria (TerminalField) — Define a região usando RowStart, ColStart, RowEnd, ColEnd.
  • text (out string) — Recebe o texto da região.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode GetColorAtPosition(int row, int column, out Color color, CommandOptions options = null)

Obtém a cor em primeiro plano do caractere na posição especificada.

Parâmetros:

  • row (int) — Linha (1-baseado).
  • column (int) — Coluna (baseado em 1).
  • color (out Color) — Recebe o valor System.Drawing.Color .
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
ScreenData GetScreen(CommandOptions options = null)

Retorna o objeto de dados de tela bruta, incluindo todos os atributos de campo e dados de caracteres.

Parâmetros:

  • options (CommandOptions, opcional) — Tempo limite e modo de espera.

Retorna: ScreenData com conteúdo de tela e metadados de campo ou null se não estiver conectado.

Métodos de campo

TerminalResultCode GetField(TerminalField field, out string text, CommandOptions options = null)

Lê o conteúdo de texto de um campo identificado por seus critérios (rótulo, índice ou coordenadas).

Parâmetros:

  • field (TerminalField) — Identificação de campo. Defina as propriedades LabeledBy, FollowedBy, Index ou as coordenadas.
  • text (out string) — Recebe o texto do campo.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode SetField(TerminalField criteria, string text, CommandOptions options = null)

Grava o texto no campo que corresponde aos critérios.

Parâmetros:

  • criteria (TerminalField) — Identificação de campo. Defina as propriedades LabeledBy, FollowedBy, Index ou as coordenadas.
  • text (string) — Texto a ser escrito.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.

Métodos do Cursor

TerminalResultCode GetCursorPosition(out CursorPosition cursorPosition, CommandOptions options = null)

Obtém a linha e a coluna atuais do cursor do terminal.

Parâmetros:

  • cursorPosition (out CursorPosition) — Recebe a posição do cursor (Row, Column).
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode MoveCursor(int row, int column, CommandOptions options = null)

Move o cursor do terminal para a linha e a coluna especificadas.

Parâmetros:

  • row (int) — Linha de destino (1-baseado).
  • column (int) — Coluna de destino (1-base).
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode MoveCursor(CursorPosition cursor, CommandOptions options = null)

Move o cursor usando um objeto CursorPosition .

Parâmetros:

  • cursor (CursorPosition) — Posição de destino.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.

Métodos de envio de chave

TerminalResultCode SendKeys(string keys, CommandOptions options = null)

Envia uma string de texto para o terminal na posição atual do cursor.

Parâmetros:

  • keys (string) — Texto a ser enviado.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode SendKeysSecure(SecureString keys, CommandOptions options = null)

Envia um SecureString para o terminal. A string é descriptografada na memória, enviada e, em seguida, o buffer não gerenciado é zerado. Use para senhas.

Parâmetros:

  • keys (SecureString) — Texto seguro a ser enviado.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode SendControlKey(ControlKey key, CommandOptions options = null)

Envia uma tecla de controle (Tab, F1–F24, Transmitir/Enter, teclas de seta etc.) para o terminal.

Parâmetros:

  • key (ControlKey) — A chave de controle a ser enviada. Consulte enum. ControlKey
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode SendControlKey(ControlKey key, int delayMS, CommandOptions options = null)

Envia uma chave de controle e aguarda um número especificado de milissegundos antes de retornar. Útil quando o host precisa de tempo de processamento após uma chave.

Parâmetros:

  • key (ControlKey) — A chave de controle a ser enviada.
  • delayMS (int) — Milissegundos para suspender após enviar a chave.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.

Métodos de espera

TerminalResultCode WaitScreenReady(CommandOptions options = null)

Aguarda até que o teclado do terminal seja desbloqueado e a tela esteja pronta para entrada.

Parâmetros:

  • options (CommandOptions, opcional) — Tempo limite e modo de espera. Defina Timeout para controlar o tempo de espera.
TerminalResultCode WaitText(string text, TerminalField criteria = null, bool matchCase = true, CommandOptions options = null)

Aguarda até que o texto especificado apareça na tela do terminal (ou em um campo específico se criteria for fornecido).

Parâmetros:

  • text (string) — Texto a ser aguardado.
  • criteria (TerminalField, opcional) — Quando definido, aguarda o texto no campo específico. Quando null, espera o texto em qualquer lugar na tela.
  • matchCase (bool, opcional) — Comparação que diferencia maiúsculas de minúsculas. Padrão: true.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.
TerminalResultCode FindTextInScreen(string text, CursorPosition startPosition, bool ignoreCase, out CursorPosition position, CommandOptions options = null)

Pesquisa a tela por uma string de texto a partir de startPosition.

Parâmetros:

  • text (string) — Texto a ser pesquisado.
  • startPosition (CursorPosition) — Posição inicial da pesquisa.
  • ignoreCase (bool) — Pesquisa sem diferenciação entre maiúsculas e minúsculas.
  • position (out CursorPosition) — Recebe as coordenadas onde o texto foi encontrado.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.

Retorna: TerminalResultCode.Success se encontrado; lança (ou retorna InvalidCoordinates) se não for localizada.

Ciclo de Vida da Conexão

TerminalResultCode Disconnect(CommandOptions options = null)

Desconecta-se do host, mantendo o objeto de conexão ativo (não descarta). Raramente necessário — Dispose() lida com a limpeza.

void Shutdown()

Alias de Dispose(). Desconecta, encerra os processos do host e libera recursos.

void Dispose()

Desconecta a sessão, encerra todos os processos do agente de host (x86/x64) e libera todos os recursos gerenciados e não gerenciados.

Avançado

TerminalResultCode OverrideScreenResolution(ScreenSize screenSize, CommandOptions options = null)

Substitui as dimensões da tela do terminal. Use quando o host exigir um tamanho de tela não padrão.

Parâmetros:

  • screenSize (ScreenSize) — Dimensões da tela de destino.
  • options (CommandOptions, opcional) — Tempo limite e modo de espera.

Classes de opções e configuração

CommandOptions

Controla o tempo limite e o comportamento de espera na tela para operações de terminal individuais.

PropriedadeTipoPadrãoDescription
Timeoutint30000Milissegundos para aguardar antes de gerar um erro de tempo limite. Quando 0 ou negativo, recai para o padrão do serviço de 30000 ms.
WaitTypeWaitModeREADYComo esperar pela tela antes de executar a operação.
// Example: 10-second timeout, wait for screen ready
var opts = new CommandOptions(WaitMode.READY, 10000);
// Example: 10-second timeout, wait for screen ready
var opts = new CommandOptions(WaitMode.READY, 10000);

ConnectionData

Objeto de configuração programático para conexões de terminais. Usado com GetConnection(ConnectionData) e GetSshConnection().

PropriedadeTipoPadrãoDescription
ProviderTypeTerminalProviderTypeUiPathNewProvedor de emulador de terminal. Use UiPathNew para conexões TCP/SSH diretas.
ConnectionTypeConnectionTypeProfileComo a conexão é estabelecida: Address (host/porta — necessário para UiPathNew), Profile (arquivo de perfil do provedor), LowLevel (EHLLAPI).
ConnectionProtocolCommunicationTypeTELNETProtocolo: TELNET, SSH ou HPVT.
TerminalTypeTerminalTypeTerminal3270Tipo de emulação de terminal.
HoststringHostname ou endereço IP do host de destino.
Portint23Porta TCP. O padrão é 23 (Telnet); O SSH normalmente usa 22.
ShowTerminalbooltrueSe a janela do terminal deve ser exibida (se compatível com o provedor).
EnableSSLboolfalseHabilite SSL/TLS para a conexão.
ProfilestringCaminho para o arquivo de perfil do provedor (para provedores baseados em perfil: Attachmate, IBM, BlueZone, etc.).
InProcessModeboolfalseExecute o provedor de terminais em processo (apenas Generic/EHLLAPI).
AttachExistingboolfalseAnexe a uma sessão de terminal já em execução. Valor true disponível apenas para o provedor Attachmate
ProxyTypeProxyTypeNoneTipo de proxy (Nenhum, HTTP, SOCKS4, SOCKS5).
ProxyHoststringNome do host do servidor proxy.
ProxyPortintPorta do servidor proxy.
ProxyUserstringNome de usuário de autenticação de proxy.
ProxyPasswordstringSenha de autenticação de proxy.
InternalEncodingstringSubstituição de codificação de caracteres (por exemplo, "IBM037" para EBCDIC).
EhllDllstringCaminho para a DLL do EHLLAPI (provedor genérico).
EhllFunctionstring"hllapi"Nome da função de ponto de entrada do EHLLAPI.
EhllSessionstring"A"Identificador de sessão do EHLLAPI.
EhllEnhancedbooltrueUse o modo EHLLAPI aprimorado.
EhllEncodingstringCodificação de caracteres usada para comunicação de texto EHLLAPI (Provedor genérico). O padrão é a codificação configurada do provedor, se não estiver definida ou não for reconhecida.
EhllBasicModeboolfalseQuando true, desabilita a análise de campo na recuperação de tela. Os dados da tela são retornados apenas como texto bruto, sem nenhum metadado de campo. Use para desempenho quando o acesso no nível do campo não for necessário (Provedor genérico).
LuNamestringPara 3270/5250: o nome da Unidade Lógica (LU) SNA a ser solicitada do host. Para VT/Wyse/Linux: a string de resposta de resposta do terminal (use ^M para retorno de carro). Não tem efeito em conexões não SNA ou não VT.
TerminalModelint0Identificador do modelo do terminal. Use o valor enum para o ativo TerminalType: TerminalModes3270 (3270), TerminalModes5250 (5250, padrão para IBM_5250_3477_FC quando 0), TTVtTermId (VT), TerminalModesHP (HAP), TerminalModesWyse (Wyse), TerminalModesLinux (Linux).

TerminalField

Identifica um campo ou região da tela para operações de leitura/gravação.

PropriedadeTipoDescription
RowStartintLinha inicial (com base em 1 ou -1 para não definida).
ColStartintColuna Inicial (com base em 1 ou -1 para não definida).
RowEndintLinha final para operações de área (-1 para desdefinir).
ColEndintColuna final para operações de área (-1 para não definir).
LabeledBystringTexto do rótulo que precede o campo.
FollowedBystringTexto do rótulo que segue o campo.
IndexintÍndice de campo baseado em zero (-1 para unset).

CursorPosition

Representa um local de linha/coluna na tela do terminal.

PropriedadeTipoDescription
RowintLinha (baseado em 1). Padrão: 1.
ColumnintColuna (baseado em 1). Padrão: 1.

Referência enum

WaitMode: NONE, READY, COMPLETE

  • NONE — Não aguarde; execute imediatamente.
  • READY — Aguarde o desbloqueio do teclado antes de executar.
  • COMPLETE — Aguarde a chegada de todos os dados da tela antes de executar.

TerminalProviderType: UiPathNew, Attachmate, IBM, BlueZone, Generic, AttachmateExtra, ReflectionUnix, ReflectionIBM, Rumba, TandemHLL

  • UiPathNew — Conexão TCP/SSH direta sem um emulador de terceiros. Compatível com Telas, SSH e iPhones.
  • TandemHLL — Sessões de host Tandem/NonStop por meio do THLLAPI (THLLW3.DLL / THLLW6.DLL, Attachmate Reflection 6530). Usa ConnectionType.LowLevel e os mesmos campos Ehll* que Generic. Os dados de atributo de cor não são compatíveis; GetColorAtPosition sempre retorna Color.LightGreen.

CommunicationType: TELNET, SSH, HPVT

ConnectionType: Address, Profile, LowLevel

  • Address — Conecte-se por host/porta. Necessário ao usar ProviderType.UiPathNew.
  • Profile — Conecte-se usando um arquivo de perfil específico do provedor (caminho definido por meio de Profile).
  • LowLevel — Conecte-se por meio do EHLLAPI (Provedor genérico) ou THLLAPI (Provedor TandemHLL).

TerminalType: Terminal3270, Terminal5250, TerminalVT, TerminalHP, TerminalANSI, TerminalT653X, TerminalSCOANSI, TerminalWYSE, TerminalLinux

ControlKey (valores selecionados): Transmit, Tab, BackTab, Return, Escape, BackSpace, Home, End, Insert, Delete, PageUp, PageDown, Up, Down, Left, Right, F1F24, Shift_F1Shift_F12, Ctrl_F1Ctrl_F12, Alt_F1Alt_F12, PA1PA3, Clear, Reset, Attention, EraseEOF, EraseInput, CursorSelect, FieldPlus, FieldMinus, FieldExit, Ctrl_ACtrl_Z, Tandem_Horizontal_Tab, Tandem_Vertical_Tab

TerminalModes3270 (use com TerminalType.Terminal3270): IBM_3270_3278_2 (0), IBM_3270_3278_3 (1), IBM_3270_3278_4 (2), IBM_3270_3278_5 (3), IBM_3270_3279_2 (4), IBM_3270_3279_3 ( 5), IBM_3270_3279_4 (6), IBM_3270_3279_5 (7)

TerminalModes5250 (use com TerminalType.Terminal5250): IBM_5250_3179_2 (54), IBM_5250_3179_220 (60), IBM_5250_3180_2 (52), IBM_5250_3196_A1 (53), IBM_5250_3477_FG (61), IBM_5250_3477_FC ( 62), IBM_5250_5251_1 (55), IBM_5250_5251_11 (56), IBM_5250_5252 (57), IBM_5250_5291_1 (58), IBM_5250_5292_2 (59), IBM_5250_5555_C01 (64), IBM_5250_5555_B01 (65 ), IBM_5250_Printer (63)

TTVtTermId (use com TerminalType.TerminalVT): VT100 (0), VT101 (1), VT102 (2), VT220 (3), VT240 (4), VT320 ( 5), VT340 (6), VT420 (7), VT100W (10), VT101W (11), VT102W (12), VT220w (13), VT240W (14 ), VT320W (15), VT340W (16), VT420W (17), VT100M (20), VT101M (21), VT102M (22), VT220M (23) , VT240M (24), VT320M (25), VT340M (26), VT420M (27)

TerminalModesHP (use com TerminalType.TerminalHP): HP_2372A (0), HP_70092 (1), HP_70094 (2)

TerminalModesWyse (use com TerminalType.TerminalWYSE): WYSE_50_24_80 (0), WYSE_50_24_132 (10), WYSE_60_24_80 (1), WYSE_60_24_132 (11), WYSE_60_42_80 (41), WYSE_60_42_132 ( 51), WYSE_60_43_80 (61), WYSE_60_43_132 (71), WYSE_350_24_80 (2), WYSE_350_24_132 (12)

TerminalModesLinux (use com TerminalType.TerminalLinux): Linux_24_80 (0), Linux_24_132 (1), Linux_36_80 (2), Linux_36_132 (3), Linux_48_80 (4), Linux_48_132 (5)

Padrões comuns

Faça login em um host 3270 e leia um campo

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        Host = "mainframe.corp.com",
        Port = 23,
        TerminalType = TerminalType.Terminal3270,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.TELNET
    };

    using var conn = terminal.GetConnection(connData);

    // Wait for login screen, then type credentials
    conn.WaitText("ENTER USERID", options: new CommandOptions(WaitMode.READY, 30000));
    conn.SetField(new TerminalField { LabeledBy = "USERID" }, "myuser");
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD" }, "mypassword");
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for main menu
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Read data
    conn.GetText(out string screen);
    Log(screen);
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        Host = "mainframe.corp.com",
        Port = 23,
        TerminalType = TerminalType.Terminal3270,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.TELNET
    };

    using var conn = terminal.GetConnection(connData);

    // Wait for login screen, then type credentials
    conn.WaitText("ENTER USERID", options: new CommandOptions(WaitMode.READY, 30000));
    conn.SetField(new TerminalField { LabeledBy = "USERID" }, "myuser");
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD" }, "mypassword");
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for main menu
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Read data
    conn.GetText(out string screen);
    Log(screen);
}

Conexão SSH com credenciais seguras

[Workflow]
public void Execute()
{
    var controlKeyDelayMS = 1000;
    var connData = new ConnectionData
    {
        Host = "unix-server.corp.com",
        Port = 22,
        TerminalType = TerminalType.TerminalVT,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.SSH
    };

    // sshPwd is a SecureString variable, for example, from Get Credential activity
    using var conn = terminal.GetSshConnection(connData, sshUser: "deploy", sshPassword: sshPwd);

    conn.WaitText("$", options: new CommandOptions(WaitMode.NONE, 10000));
    conn.SendKeys("ls -la /var/log");
    conn.SendControlKey(ControlKey.Transmit, controlKeyDelayMS);

    conn.GetText(out string output);
    Log(output);
}
[Workflow]
public void Execute()
{
    var controlKeyDelayMS = 1000;
    var connData = new ConnectionData
    {
        Host = "unix-server.corp.com",
        Port = 22,
        TerminalType = TerminalType.TerminalVT,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.SSH
    };

    // sshPwd is a SecureString variable, for example, from Get Credential activity
    using var conn = terminal.GetSshConnection(connData, sshUser: "deploy", sshPassword: sshPwd);

    conn.WaitText("$", options: new CommandOptions(WaitMode.NONE, 10000));
    conn.SendKeys("ls -la /var/log");
    conn.SendControlKey(ControlKey.Transmit, controlKeyDelayMS);

    conn.GetText(out string output);
    Log(output);
}

Use ao automatizar uma sessão de terminal gerenciada por um emulador de terceiros que expõe uma interface EHLLAPI (por exemplo, uma sessão em execução do IBM PCOMM ou BlueZone acessada por meio de sua EHLLAPI DLL).

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.Generic,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\IBM\Personal Communications\PCSHLL32.DLL",
        EhllFunction = "hllapi",
        EhllSession = "A",
        EhllEnhanced = true
    };

    using var conn = terminal.GetConnection(connData);

    // Move cursor to the Option field and type a menu choice
    conn.MoveCursor(row: 4, column: 14);
    conn.SendKeys("2");
    conn.SendControlKey(ControlKey.Transmit);
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 20000));

    // Read a region of the response screen (rows 5-20, full width)
    var region = new TerminalField { RowStart = 5, ColStart = 1, RowEnd = 20, ColEnd = 80 };
    conn.GetScreenArea(region, out string result);
    Log(result);
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.Generic,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\IBM\Personal Communications\PCSHLL32.DLL",
        EhllFunction = "hllapi",
        EhllSession = "A",
        EhllEnhanced = true
    };

    using var conn = terminal.GetConnection(connData);

    // Move cursor to the Option field and type a menu choice
    conn.MoveCursor(row: 4, column: 14);
    conn.SendKeys("2");
    conn.SendControlKey(ControlKey.Transmit);
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 20000));

    // Read a region of the response screen (rows 5-20, full width)
    var region = new TerminalField { RowStart = 5, ColStart = 1, RowEnd = 20, ColEnd = 80 };
    conn.GetScreenArea(region, out string result);
    Log(result);
}

Aguarde o processamento e leia um campo de resultado (IBM Personal Communications /perfil salvo)

Use quando a conexão estiver pré-configurada em um arquivo de espaço de trabalho do IBM PCOMM (.ws). O PCOMM deve estar instalado na máquina do Robô.

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.IBM,
        ConnectionType = ConnectionType.Profile,
        Mode = ConnectionMode.Play,
        ShowTerminal = true,
        Profile = @"C:\PComm\Profiles\MainframeSession.ws"
    };

    using var conn = terminal.GetConnection(connData);

    // Submit a transaction
    conn.SetField(new TerminalField { LabeledBy = "TRAN CODE" }, "INQ01");
    conn.SetField(new TerminalField { LabeledBy = "ACCOUNT  " }, accountNumber);
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for either success or error indicator
    var opts = new CommandOptions(WaitMode.READY, 30000);
    conn.WaitScreenReady(opts);

    // Check status field
    conn.GetField(new TerminalField { LabeledBy = "STATUS   " }, out string status);
    if (status.Trim() == "00")
    {
        conn.GetField(new TerminalField { LabeledBy = "BALANCE  " }, out string balance);
        Log($"Balance: {balance}");
    }
    else
    {
        conn.GetText(out string screen);
        throw new Exception($"Transaction failed. Status: {status}. Screen: {screen}");
    }
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.IBM,
        ConnectionType = ConnectionType.Profile,
        Mode = ConnectionMode.Play,
        ShowTerminal = true,
        Profile = @"C:\PComm\Profiles\MainframeSession.ws"
    };

    using var conn = terminal.GetConnection(connData);

    // Submit a transaction
    conn.SetField(new TerminalField { LabeledBy = "TRAN CODE" }, "INQ01");
    conn.SetField(new TerminalField { LabeledBy = "ACCOUNT  " }, accountNumber);
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for either success or error indicator
    var opts = new CommandOptions(WaitMode.READY, 30000);
    conn.WaitScreenReady(opts);

    // Check status field
    conn.GetField(new TerminalField { LabeledBy = "STATUS   " }, out string status);
    if (status.Trim() == "00")
    {
        conn.GetField(new TerminalField { LabeledBy = "BALANCE  " }, out string balance);
        Log($"Balance: {balance}");
    }
    else
    {
        conn.GetText(out string screen);
        throw new Exception($"Transaction failed. Status: {status}. Screen: {screen}");
    }
}

Detectar uma cor de campo para lógica condicional

[Workflow]
public void Execute()
{
    var conn = terminal.GetConnection(connectionString);
    try
    {
        conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 10000));

        // Check if the status indicator at row 24, col 1 is red (error)
        conn.GetColorAtPosition(24, 1, out Color statusColor);

        if (statusColor == Color.Red)
        {
            conn.GetText(out string errorScreen);
            Log($"Error screen detected: {errorScreen}");
        }
        else
        {
            conn.GetField(new TerminalField { Index = 0 }, out string firstField);
            Log($"First field: {firstField}");
        }
    }
    finally
    {
        conn.Dispose();
    }
}
[Workflow]
public void Execute()
{
    var conn = terminal.GetConnection(connectionString);
    try
    {
        conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 10000));

        // Check if the status indicator at row 24, col 1 is red (error)
        conn.GetColorAtPosition(24, 1, out Color statusColor);

        if (statusColor == Color.Red)
        {
            conn.GetText(out string errorScreen);
            Log($"Error screen detected: {errorScreen}");
        }
        else
        {
            conn.GetField(new TerminalField { Index = 0 }, out string firstField);
            Log($"First field: {firstField}");
        }
    }
    finally
    {
        conn.Dispose();
    }
}

Conecte-se a um host Tandem/NonStop via THLLAPI

Use ao automatizar uma sessão Tandem/NonStop em execução por meio do Attachmate Reflection 6530. O ponto de entrada EhllFunction para a THLLAPI é "thllapi" (não "hllapi"). Os dados do atributo de cor não estão disponíveis para este provedor.

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.TandemHLL,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\Attachmate\Reflection\THLLW6.DLL",
        EhllFunction = "thllapi",
        EhllSession = "A"
    };

    using var conn = terminal.GetConnection(connData);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Type a command and submit with Horizontal Tab to move between fields
    conn.SetField(new TerminalField { LabeledBy = "LOGON:" }, "myuser");
    conn.SendControlKey(ControlKey.Tandem_Horizontal_Tab);
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD:" }, "mypassword");
    conn.SendControlKey(ControlKey.Return);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));
    conn.GetText(out string screen);
    Log(screen);
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.TandemHLL,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\Attachmate\Reflection\THLLW6.DLL",
        EhllFunction = "thllapi",
        EhllSession = "A"
    };

    using var conn = terminal.GetConnection(connData);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Type a command and submit with Horizontal Tab to move between fields
    conn.SetField(new TerminalField { LabeledBy = "LOGON:" }, "myuser");
    conn.SendControlKey(ControlKey.Tandem_Horizontal_Tab);
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD:" }, "mypassword");
    conn.SendControlKey(ControlKey.Return);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));
    conn.GetText(out string screen);
    Log(screen);
}

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades