UiPath Documentation
activities
latest
false
Important :
Veuillez noter que ce contenu a été localisé en partie à l’aide de la traduction automatique. La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.
UiPath logo, featuring letters U and I in white

Activités UIAutomation

Dernière mise à jour 16 avr. 2026

API d'automatisation codée par terminal

UiPath.Terminal.Activities

API de workflow codée pour automatiser les sessions d'émulation de terminal. Fournit des méthodes pour établir des connexions à IBM 3270/5250, VT, HP, ANSI, Wyse et d’autres systèmes de terminal hérités via BlueZone, IBM PC Puis, Attachmate ou des connexions TCP/SSH directes, puis interagir avec l’écran du terminal de manière programmatique.

Accesseur au service : terminal (type ITerminalService) Package requis : "UiPath.Terminal.Activities": "*" dans les dépendances project.json

Namespaces importés automatiquement

Ces espaces de noms sont automatiquement disponibles dans les workflows codés lorsque ce package est installé :

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

Vue d’ensemble du service

Le service terminal fournit des méthodes d’usine qui ouvrent une connexion de terminal et renvoient un objet TerminalConnection . L’objet de connexion est la zone d’API pour toutes les opérations de terminal : lectures d’écran, accès au champ, envoi de touches et attente.

Il s’agit d’une API basée sur la connexion:

  1. Appelez une méthode de service (GetConnection / GetSshConnection) pour ouvrir et vous connecter.
  2. Utilisez le TerminalConnection renvoyé pour effectuer les opérations du terminal.
  3. Ignorez la connexion une fois que vous avez terminé (ou utilisez une instruction using ).

En mode de workflow codé, toutes les méthodes TerminalConnection génèrent TerminalConnectionException en cas d'échec au lieu de renvoyer des codes d'erreur. Cela signifie que vous n'avez pas besoin de vérifier les valeurs renvoyées. Il suffit pour cela de gérer les exceptions.

Méthodes de connexion

TerminalConnection GetConnection(string connectionString)

Ouvre une connexion de terminal à l'aide d'une chaîne de connexion sérialisée. La chaîne de connexion encode le type de fournisseur, l'hôte, le port, le protocole et d'autres paramètres. Utilisez la boîte de dialogue Paramètres de connexion de l’activité Session de terminal XAML pour générer une chaîne valide.

Paramètres :

  • connectionString (string) — Chaîne de connexion sérialisée. Exemple : obtenu en configurant une activité Session de terminal et en copiant la valeur de la propriété ConnectionString .

Renvoie ce qui suit : TerminalConnection — Une session de terminal connectée et ouverte. Implémente IDisposable; à l’intérieur d’une instruction using .

Génère : TerminalConnectionException si la connexion ne peut pas être établie dans le délai d’expiration.

TerminalConnection GetConnection(ConnectionData connectionData)

Ouvre une connexion de terminal à l’aide d’un objet ConnectionData , permettant une configuration par programmation sans chaîne de connexion sérialisée.

Paramètres :

  • connectionData (ConnectionData) — Objet de configuration spécifiant les paramètres du fournisseur, de l'hôte, du port, du protocole et de l'émulation.

Renvoie ce qui suit : TerminalConnection — Une session de terminal connectée et ouverte.

Génère : TerminalConnectionException si la connexion ne peut pas être établie.

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

Ouvre une connexion de terminal SSH avec des informations d'identification explicites. Le connectionData doit spécifier ProviderType = UiPathNew et ConnectionProtocol = SSH.

Paramètres :

  • connectionData (ConnectionData) — Configuration de la connexion. Doit avoir ProviderType = TerminalProviderType.UiPathNew et ConnectionProtocol = CommunicationType.SSH.
  • sshUser (string) — Nom d'utilisateur SSH.
  • sshPassword (SecureString) — Mot de passe SSH. Utilisez une variable SecureString (par exemple, de Obtenir l'information d'identification) pour éviter l'exposition en texte brut.

Renvoie ce qui suit : TerminalConnection — Une session de terminal SSH ouverte et connectée.

Génère : TerminalConnectionException si la connexion échoue, ou ArgumentException si ProviderType ou ConnectionProtocol n’est pas valide.

ConnexionTerminaison

TerminalConnection est le handle renvoyé par toutes les méthodes de service. Il fournit toutes les opérations d’interaction du terminal et implémente IDisposable.

Remarque :

Ce type implémente IDisposable. Utilisez toujours l’instruction using ou appelez Dispose() / Shutdown() explicitement. L'élimination déconnecte la session et arrête tous les processus hôtes.

Propriétés

PropriétéSaisie de texteDescription
Connectedbooltrue si la session est actuellement connectée à l’hôte.
ConnectionStringstringLa chaîne de connexion sérialisée utilisée pour établir cette connexion.
DefaultCmdOptionsCommandOptionsLes options de délai d’expiration et de mode d’attente par défaut appliquées à toutes les opérations lorsqu’elles ne sont pas explicitement remplacées.

Events

Événement (Event)Description
TerminalScreenChangedÉlevé lorsque le contenu de l'écran du terminal change.
TerminalFieldChangedDéclenché lorsque la valeur d’un champ change.
TerminalCursorChangedÉlevé lorsque la position du curseur change.
TerminalConnectionChangedDéclenché lorsque le statut de la connexion change (par exemple, connexion/déconnexion).
TerminalErrorRaisedDéclenché lorsqu’une erreur de terminal se produit de manière asynchrone.

Méthodes de lecture d'écran

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

Lit tout le contenu textuel visible de l’écran du terminal.

Paramètres :

  • text (out string) — Reçoit le texte complet de l'écran.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente. La valeur par défaut est DefaultCmdOptions.

Renvoie ce qui suit : TerminalResultCode.Success (ou génère TerminalConnectionException en cas d'échec en mode de workflow codé).

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

Lit le texte à partir de l'écran à partir de la position définie par criteria. Limite éventuellement le nombre de caractères lus.

Paramètres :

  • criteria (TerminalField) — Définit la position de départ via RowStart / ColStart.
  • length (int?, facultatif) — Nombre de caractères à lire. null lit jusqu'à la fin de la ligne.
  • text (out string) — Reçoit le texte lu à partir de la position.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode GetScreenArea(TerminalField criteria, out string text, CommandOptions options = null)

Lit le texte d'une région rectangle de l'écran définie par criteria.

Paramètres :

  • criteria (TerminalField) — Définit la région en utilisant RowStart, ColStart, RowEnd, ColEnd.
  • text (out string) — Reçoit le texte de la région.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode GetColorAtPosition(int row, int column, out Color color, CommandOptions options = null)

Récupère la couleur de premier plan du caractère à la position spécifiée.

Paramètres :

  • row (int) — Ligne (Basée sur 1).
  • column (int) — Colonne (basée sur 1).
  • color (out Color) — Reçoit la valeur System.Drawing.Color .
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
ScreenData GetScreen(CommandOptions options = null)

Renvoie l'objet de données d'écran brut en incluant tous les attributs de champ et les données de caractères.

Paramètres :

  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.

Renvoie ce qui suit : ScreenData avec le contenu de l'écran et les métadonnées du champ, ou null si l'option n'est pas connectée.

Méthodes de champ

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

Lit le contenu textuel d’un champ identifié par ses critères (libellé, index ou coordonnées).

Paramètres :

  • field (TerminalField) — Identification du champ. Définissez LabeledBy, FollowedBy, Index ou des propriétés de coordonnées.
  • text (out string) — Reçoit le texte de champ.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode SetField(TerminalField criteria, string text, CommandOptions options = null)

Écrit du texte dans le champ correspondant aux critères.

Paramètres :

  • criteria (TerminalField) — Identification du champ. Définissez LabeledBy, FollowedBy, Index ou des propriétés de coordonnées.
  • text (string) — Texte à écrire.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.

Méthodes du curseur

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

Récupère la ligne et la colonne actuelles du curseur du terminal.

Paramètres :

  • cursorPosition (out CursorPosition) — Reçoit la position du curseur (Row, Column).
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode MoveCursor(int row, int column, CommandOptions options = null)

Déplace le curseur du terminal vers la ligne et la colonne spécifiées.

Paramètres :

  • row (int) — Ligne cible (Basée sur 1).
  • column (int) — Colonne cible (Basée sur 1).
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode MoveCursor(CursorPosition cursor, CommandOptions options = null)

Déplace le curseur à l'aide d'un objet CursorPosition .

Paramètres :

  • cursor (CursorPosition) — Position de la cible.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.

Méthodes d’envoi clés

TerminalResultCode SendKeys(string keys, CommandOptions options = null)

Envoie une chaîne de texte au terminal à la position actuelle du curseur.

Paramètres :

  • keys (string) — Texte à envoyer.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode SendKeysSecure(SecureString keys, CommandOptions options = null)

Envoie une SecureString au terminal. La chaîne est déchiffrée en mémoire, puis envoyée en mémoire tampon non gérée. À utiliser pour les mots de passe.

Paramètres :

  • keys (SecureString) — Texte sécurisé à envoyer.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode SendControlKey(ControlKey key, CommandOptions options = null)

Envoie une touche Contrôle au terminal.

Paramètres :

  • key (ControlKey) — La clé de contrôle à envoyer. Voir l’énumération ControlKey .
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode SendControlKey(ControlKey key, int delayMS, CommandOptions options = null)

Envoie une touche de contrôle, puis attend un nombre spécifié de millisecondes avant de renvoyer. Utile lorsque l’hôte a besoin de temps de traitement après une clé.

Paramètres :

  • key (ControlKey) — La clé de contrôle à envoyer.
  • delayMS (int) — Millisecondes en veille après l'envoi de la clé.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.

Méthodes d'attente

TerminalResultCode WaitScreenReady(CommandOptions options = null)

Attend que le clavier du terminal soit déverrouillé et que l’écran soit prêt pour la saisie.

Paramètres :

  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente. Définissez Timeout pour contrôler la durée d'attente.
TerminalResultCode WaitText(string text, TerminalField criteria = null, bool matchCase = true, CommandOptions options = null)

Attend que le texte spécifié s'affiche sur l'écran du terminal ou dans un champ spécifique si criteria est fourni.

Paramètres :

  • text (string) — Texte à attendre.
  • criteria (TerminalField, facultatif) — Lorsque cette option est définie, attend le texte dans le champ spécifique. Lorsque null attend, le texte se trouve n’importe où à l’écran.
  • matchCase (bool, facultatif) — Comparaison sensible à la casse. Par défaut : true.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.
TerminalResultCode FindTextInScreen(string text, CursorPosition startPosition, bool ignoreCase, out CursorPosition position, CommandOptions options = null)

Recherche l'écran pour une chaîne de texte commençant par startPosition.

Paramètres :

  • text (string) — Texte à rechercher.
  • startPosition (CursorPosition) — Position de recherche de départ.
  • ignoreCase (bool) — Recherche insensible à la casse.
  • position (out CursorPosition) — Reçoit les coordonnées où le texte a été trouvé.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.

Renvoie ce qui suit : TerminalResultCode.Success si trouvé ; génère (ou renvoie InvalidCoordinates) s’il est introuvable.

Cycle de vie de connexion

TerminalResultCode Disconnect(CommandOptions options = null)

Se déconnecte de l'hôte tout en maintenant l'objet de connexion actif (n'est pas supprimé). Rarement nécessaire — Dispose() gère le nettoyage.

void Shutdown()

Alias pour Dispose(). Se déconnecte, arrête les processus hôtes et libère des ressources.

void Dispose()

Déconnecte la session, arrête tous les processus de courtier de l'hôte (x86/x64) et libéra toutes les ressources gérées et non gérées.

Avancé

TerminalResultCode OverrideScreenResolution(ScreenSize screenSize, CommandOptions options = null)

Remplace les dimensions de l'écran du terminal. À utiliser lorsque l'hôte a besoin d'une taille d'écran non standard.

Paramètres :

  • screenSize (ScreenSize) — Dimensions de l'écran cible.
  • options (CommandOptions, facultatif) — Délai d'attente et mode d'attente.

Classes d’options et de configuration

CommandOptions

Contrôle le délai d’attente et le comportement d’attente d’écran pour les opérations de terminal individuelles.

PropriétéSaisie de texteDefaultDescription
Timeoutint30000Millisecondes à attendre avant de générer une erreur de délai d’attente. Lorsqu’elle est 0 ou négative, elle revient à la valeur par défaut du service de 30 000 ms.
WaitTypeWaitModeREADYComment attendre l'écran avant d'exécuter l'opération.
// 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

Objet de configuration programmatique pour les connexions de terminal. Utilisée avec GetConnection(ConnectionData) et GetSshConnection().

PropriétéSaisie de texteDefaultDescription
ProviderTypeTerminalProviderTypeUiPathNewFournisseur d’émulateur de terminal. Utilisez UiPathNew pour les connexions TCP/SSH directes.
ConnectionTypeConnectionTypeProfileMode d'établissement de la connexion : Address (hôte/port — requis pour UiPathNew), Profile (fichier de profil du fournisseur), LowLevel (EHLLAPI).
ConnectionProtocolCommunicationTypeTELNETProtocole : TELNET, SSH ou HPVT.
TerminalTypeTerminalTypeTerminal3270Type d’émulation de terminal.
HoststringNom d'hôte ou adresse IP de l'hôte cible.
Portint23Port TCP. La valeur par défaut est 23 (Telnet) ; SSH utilise généralement 22.
ShowTerminalbooltrueS'il faut afficher la fenêtre du terminal (si prise en charge par le fournisseur).
EnableSSLboolfalseActivez SSL/TLS pour la connexion.
ProfilestringChemin d’accès au fichier de profil du fournisseur.
InProcessModeboolfalseExécutez le fournisseur de terminal en cours de processus (Generic/EHLLAPI uniquement).
AttachExistingboolfalseConnectez-vous à une session de terminal déjà en cours d'exécution. Valeur true uniquement disponible pour le fournisseur Attachmate
ProxyTypeProxyTypeNoneType de proxy (Aucune, HTTP, SOCKS4, SOCKS5).
ProxyHoststringNom d'hôte du serveur proxy.
ProxyPortintPort du serveur proxy.
ProxyUserstringNom d'utilisateur d'authentification du proxy.
ProxyPasswordstringMot de passe d'authentification du proxy.
InternalEncodingstringRemplacement d'encodage de caractères (par exemple, "IBM037" pour EBCDIC).
EhllDllstringChemin d'accès à EHLLAPI DLL (fournisseur générique).
EhllFunctionstring"hllapi"Nom de la fonction du point d’entrée EHLLAPI.
EhllSessionstring"A"Identificateur de session EHLLAPI.
EhllEnhancedbooltrueUtiliser le mode EHLLAPI amélioré.
EhllEncodingstringEncodage de caractères utilisé pour la communication textuelle EHLLAPI (fournisseur générique). Utilise par défaut l’encodage configuré du fournisseur s’il n’est pas défini ou non reconnu.
EhllBasicModeboolfalseLorsque true, désactive l'analyse des champs lors de la récupération de l'écran. Les données d’écran sont renvoyées sous forme de texte brut uniquement, sans métadonnées de champ. À utiliser pour les performances lorsque l’accès au niveau du champ n’est pas nécessaire (fournisseur générique).
LuNamestringPour 3270/5250 : le nom de l'unité logique SNA à demander à l'hôte. ^M VT/Wyse/Linux : la chaîne de réponse du terminal. Aucun effet sur les connexions non SNA ou VT.
TerminalModelint0Identifiant de modèle de terminal. Utilisez la valeur enum pour le TerminalType actif : TerminalModes3270 (3270), TerminalModes5250 (5250, par défaut sur IBM_5250_3477_FC lorsque 0), TTVtTermId (VT), TerminalModesHP (HP), TerminalModesWyse (Wyse), TerminalModesLinux (Linux).

TerminalField

Identifie un champ ou une région d’écran pour les opérations de lecture/d’écriture.

PropriétéSaisie de texteDescription
RowStartintLigne de départ (dans 1, ou -1 pour non défini).
ColStartintColonne de début (dans 1, ou -1 pour non défini).
RowEndintLigne de fin pour les opérations de zone (-1 pour non défini).
ColEndintColonne de fin pour les opérations de zone (-1 pour non défini).
LabeledBystringTexte du libellé qui précède le champ.
FollowedBystringTexte du libellé qui suit le champ.
IndexintIndex de champ de base zéro (-1 pour non défini).

CursorPosition

Représente un emplacement de ligne/colonne sur l’écran du terminal.

PropriétéSaisie de texteDescription
RowintLigne (1). Par défaut : 1.
ColumnintColonne (1). Par défaut : 1.

Référence Énumération

WaitMode: NONE, READY, COMPLETE

  • NONE — Ne pas attendre ; exécuter immédiatement.
  • READY — Attendez que le clavier soit déverrouillé avant d’exécuter.
  • COMPLETE : Attendre que toutes les données de l'écran arrivent avant l'exécution.

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

  • UiPathNew — Connexion TCP/SSH directe sans émulateur tiers. Prend en charge Telnet, SSH et HPVT.
  • TandemHLL — sessions hôtes Tandem/NonStop via THLLAPI (THLLW3.DLL / THLLW6.DLL, Attachmate Reflection 6530). Utilise ConnectionType.LowLevel et les mêmes champs Ehll* que Generic Les données d'attribut de couleur ne sont pas prises en charge ; GetColorAtPosition renvoie toujours Color.LightGreen

CommunicationType: TELNET, SSH, HPVT

ConnectionType: Address, Profile, LowLevel

  • Address — Connexion par hôte/port. Obligatoire lors de l'utilisation ProviderType.UiPathNew.
  • Profile — Connectez-vous à l'aide d'un fichier de profil spécifique au fournisseur (chemin défini via Profile).
  • LowLevel — Connexion via EHLLAPI (fournisseur génératif) ou THLLAPI (fournisseur TenemHLL).

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

ControlKey (valeurs sélectionnées) : 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 (utiliser avec 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 (utiliser avec 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 (utiliser avec 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 (utiliser avec TerminalType.TerminalHP) : HP_2372A (0), HP_70092 (1), HP_70094 (2)

TerminalModesWyse (utiliser avec 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 (utiliser avec 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)

Modèles communs

Connectez-vous à un hôte 3270 et lisez un champ

[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);
}

Connexion SSH avec des identifiants sécurisés

[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);
}

À utiliser lors de l’automatisation d’une session de terminal gérée par un émulateur tiers qui affiche une interface EHLLAPI (par exemple, une session IBM PC Puis ou BlueZone en cours d’exécution accessible via sa DLL EHLLAPI en cours d’exécution.

[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);
}

Attendez le traitement et lisez un champ de résultat (IBM Personal Communications/profil enregistré)

À utiliser lorsque la connexion est préconfigurée dans un fichier d’espace de travail IBM PCOMM (.ws). Le protocole PCAM doit être installé sur la machine robot.

[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}");
    }
}

Détecter une couleur de champ pour une logique conditionnelle

[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();
    }
}

Connectez-vous à un hôte Tandem/NonStop via THLLAPI

À utiliser lors de l’automatisation d’une session Tandem/NonStop exécutée via Attachmate Reflection 6530. Le point d'entrée EhllFunction pour THLLAPI est "thllapi" (par exemple "hllapi"). Les données d'attribut de couleur ne sont pas disponibles pour ce fournisseur.

[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);
}

Cette page vous a-t-elle été utile ?

Connecter

Besoin d'aide ? Assistance

Vous souhaitez apprendre ? UiPath Academy

Vous avez des questions ? UiPath Forum

Rester à jour