UiPath Documentation
activities
latest
false
Wichtig :
Bitte beachten Sie, dass dieser Inhalt teilweise mithilfe von maschineller Übersetzung lokalisiert wurde. Es kann 1–2 Wochen dauern, bis die Lokalisierung neu veröffentlichter Inhalte verfügbar ist.
UiPath logo, featuring letters U and I in white

UIAutomation-Aktivitäten

Letzte Aktualisierung 15. Apr. 2026

Terminalcodierte Automatisierungs-APIs

UiPath.Terminal.Activities

Codierte Workflow-API zur Automatisierung von Terminalemulationssitzungen. Stellt Methoden zum Aufbau von Verbindungen mit IBM 3270/5250, VT, HP, ANSI, Wyse und anderen Legacy-Terminalsystemen über BlueZone, IBM PCOMM, Attachmate oder direkte TCP/SSH-Verbindungen her und interagiert dann programmatisch mit dem Terminalbildschirm.

Dienst-Accessor: terminal (Typ ITerminalService) Erforderliches Paket: "UiPath.Terminal.Activities": "*" in project.json-Abhängigkeiten

Automatisch importierte Namensräume

Diese Namespaces sind automatisch in codierten Workflows verfügbar, wenn dieses Paket installiert wird:

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

Dienstübersicht

Der terminal -Dienst bietet Factory-Methoden, die eine Terminalverbindung öffnen und ein TerminalConnection -Objekt zurückgeben. Das Verbindungsobjekt ist die API-Oberfläche für alle Terminalvorgänge – Bildschirmlesevorgänge, Feldzugriff, Schlüsselsenden und Warten.

Dies ist eine verbindungsbasierte API:

  1. Rufen Sie eine Dienstmethode (GetConnection / GetSshConnection) auf, um sie zu öffnen und zu verbinden.
  2. Verwenden Sie das zurückgegebene TerminalConnection um Terminalvorgänge auszuführen.
  3. Verwerfen Sie die Verbindung, wenn Sie fertig sind (oder verwenden Sie eine using -Anweisung).

Im codierten Workflowmodus geben alle TerminalConnection -Methoden bei Fehler TerminalConnectionExceptionaus, anstatt Fehlercodes zurückzugeben. Das bedeutet, dass Sie keine Rückgabewerte überprüfen müssen – nur Ausnahmen verarbeiten müssen.

Verbindungsmethoden

TerminalConnection GetConnection(string connectionString)

Öffnet eine Terminalverbindung mithilfe einer serialisierten Verbindungszeichenfolge. Die Verbindungszeichenfolge codiert den Anbietertyp, den Host, den Port, das Protokoll und andere Einstellungen. Verwenden Sie das Dialogfeld Verbindungseinstellungen der Aktivität Terminal Session XAML, um eine gültige Zeichenfolge zu generieren.

Parameter:

  • connectionString (string) – Serialisierte Verbindungszeichenfolge. Beispiel: Wird durch Konfigurieren einer Terminal Session-Aktivität und Kopieren des Eigenschaftswerts ConnectionString erhalten.

Gibt Folgendes zurück: TerminalConnection – Eine offene, verbundene Terminalsitzung. Implementiert IDisposable; in einer using -Anweisung verwenden.

Löst aus: TerminalConnectionException , wenn die Verbindung nicht innerhalb des Timeouts hergestellt werden kann.

TerminalConnection GetConnection(ConnectionData connectionData)

Öffnet eine Terminalverbindung mithilfe eines ConnectionData -Objekts und ermöglicht eine programmgesteuerte Konfiguration ohne serialisierte Verbindungszeichenfolge.

Parameter:

  • connectionData (ConnectionData) – Konfigurationsobjekt, das Anbieter, Host, Port, Protokoll und Emulationseinstellungen angibt.

Gibt Folgendes zurück: TerminalConnection – Eine offene, verbundene Terminalsitzung.

Löst aus: TerminalConnectionException wenn die Verbindung nicht hergestellt werden kann.

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

Öffnet eine SSH-Terminalverbindung mit expliziten Anmeldeinformationen. Der connectionData muss ProviderType = UiPathNew und ConnectionProtocol = SSH angeben.

Parameter:

  • connectionData (ConnectionData) – Verbindungskonfiguration. Muss ProviderType = TerminalProviderType.UiPathNew und ConnectionProtocol = CommunicationType.SSH haben.
  • sshUser (string) – SSH-Benutzername.
  • sshPassword (SecureString) – SSH-Kennwort. Verwenden Sie eine SecureString -Variable (z. B. aus Get Credential), um Klartext zu vermeiden.

Gibt Folgendes zurück: TerminalConnection – Eine offene, verbundene SSH-Terminalsitzung.

Gibt Folgendes aus: TerminalConnectionException wenn die Verbindung fehlschlägt, oder ArgumentException , wenn ProviderType oder ConnectionProtocol ungültig ist.

Terminalverbindung

TerminalConnection ist das Handle, das von allen Dienstmethoden zurückgegeben wird. Es stellt alle Terminal-Interaktionsvorgänge bereit und implementiert IDisposable.

Hinweis:

Dieser Typ implementiert IDisposable. Immer innerhalb einer using -Anweisung verwenden oder Dispose() / Shutdown() explizit aufrufen. Durch das Verwerfen wird die Sitzung getrennt und alle Hostprozesse beendet.

Eigenschaften

EigenschaftenTypBeschreibung
Connectedbooltrue wenn die Sitzung derzeit mit dem Host verbunden ist.
ConnectionStringstringDie serialisierte Verbindungszeichenfolge zum Aufbau dieser Verbindung.
DefaultCmdOptionsCommandOptionsStandardoptionen für Timeout und Wartemodus, die auf alle Vorgänge angewendet werden, wenn sie nicht explizit überschrieben werden.

Events

Ereignis (Event)Beschreibung
TerminalScreenChangedWird ausgelöst, wenn sich der Bildschirminhalt des Terminals ändert.
TerminalFieldChangedWird ausgelöst, wenn sich ein Feldwert ändert.
TerminalCursorChangedWird erhöht, wenn sich die Cursorposition ändert.
TerminalConnectionChangedWird ausgelöst, wenn sich der Verbindungsstatus ändert (z. B. verbinden/trennen).
TerminalErrorRaisedWird ausgelöst, wenn ein Terminalfehler asynchron auftritt.

Bildschirmlesemethoden

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

Liest den gesamten sichtbaren Textinhalt des Terminalbildschirms.

Parameter:

  • text (out string) – Erhält den Vollbildtext.
  • options (CommandOptions, optional) – Timeout und Wartemodus. Die Standardeinstellung ist DefaultCmdOptions.

Gibt Folgendes zurück: TerminalResultCode.Success (oder löst bei einem Fehler im codierten Workflowmodus TerminalConnectionException aus).

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

Liest Text vom Bildschirm ab der durch criteria definierten Position. Begrenzt optional die Anzahl der gelesenen Zeichen.

Parameter:

  • criteria (TerminalField) – Definiert die Startposition über RowStart / ColStart.
  • length (int?, optional) – Anzahl der zu lesenden Zeichen. null liest bis zum Ende der Zeile.
  • text (out string) – Empfängt den von der Position gelesenen Text.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode GetScreenArea(TerminalField criteria, out string text, CommandOptions options = null)

Liest Text aus einem Rechteckbereich des Bildschirms, der durch criteria definiert wird.

Parameter:

  • criteria (TerminalField) – Definiert die Region mit RowStart, ColStart, RowEnd, ColEnd.
  • text (out string) – Empfängt den Text von der Region.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode GetColorAtPosition(int row, int column, out Color color, CommandOptions options = null)

Ruft die Vordergrundfarbe des Zeichens an der angegebenen Position ab.

Parameter:

  • row (int) – Zeile (1-basiert).
  • column (int) – Spalte (1-basiert).
  • color (out Color) – Empfängt den Wert System.Drawing.Color .
  • options (CommandOptions, optional) – Timeout und Wartemodus.
ScreenData GetScreen(CommandOptions options = null)

Gibt das rohe Bildschirmdatenobjekt einschließlich aller Feldattribute und Zeichendaten zurück.

Parameter:

  • options (CommandOptions, optional) – Timeout und Wartemodus.

Gibt Folgendes zurück: ScreenData mit Bildschirminhalt und Feldmetadaten oder null , wenn nicht verbunden.

Feldmethoden

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

Liest den Textinhalt eines Felds, das durch seine Kriterien (Bezeichnung, Index oder Koordinaten) identifiziert wird.

Parameter:

  • field (TerminalField) – Feldidentifikation. Legen Sie LabeledBy, FollowedBy, Index oder Koordinateneigenschaften fest.
  • text (out string) – Empfängt den Feldtext.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode SetField(TerminalField criteria, string text, CommandOptions options = null)

Schreibt Text in das Feld, der den Kriterien entspricht.

Parameter:

  • criteria (TerminalField) – Feldidentifikation. Legen Sie LabeledBy, FollowedBy, Index oder Koordinateneigenschaften fest.
  • text (string) – Zu schreibender Text.
  • options (CommandOptions, optional) – Timeout und Wartemodus.

Cursor-Methoden

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

Ruft die aktuelle Zeile und Spalte des Terminalcursors ab.

Parameter:

  • cursorPosition (out CursorPosition) – Empfängt die Cursorposition (Row, Column).
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode MoveCursor(int row, int column, CommandOptions options = null)

Verschiebt den Terminalcursor zur angegebenen Zeile und Spalte.

Parameter:

  • row (int) – Zielzeile (1-basiert).
  • column (int) – Zielspalte (1-basiert).
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode MoveCursor(CursorPosition cursor, CommandOptions options = null)

Bewegt den Cursor mithilfe eines CursorPosition -Objekts.

Parameter:

  • cursor (CursorPosition) – Zielposition.
  • options (CommandOptions, optional) – Timeout und Wartemodus.

Wichtige Sendemethoden

TerminalResultCode SendKeys(string keys, CommandOptions options = null)

Sendet eine Textzeichenfolge an das Terminal an der aktuellen Cursorposition.

Parameter:

  • keys (string) – Zu sendender Text.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode SendKeysSecure(SecureString keys, CommandOptions options = null)

Sendet ein SecureString an das Terminal. Die Zeichenfolge wird im Arbeitsspeicher entschlüsselt und gesendet, dann wird der nicht verwaltete Puffer auf Null gesetzt. Für Kennwörter verwenden.

Parameter:

  • keys (SecureString) – Sicherer Text zum Senden.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode SendControlKey(ControlKey key, CommandOptions options = null)

Sendet eine Kontrolltaste (Tabulatortaste, F1–F24, Senden/Eingeben, Pfeiltasten usw.) an das Terminal.

Parameter:

  • key (ControlKey) – Die zu sendende Kontrolltaste. Siehe ControlKey -Enumeration.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode SendControlKey(ControlKey key, int delayMS, CommandOptions options = null)

Sendet eine Kontrolltaste und wartet dann eine bestimmte Anzahl von Millisekunden, bevor sie zurückgegeben wird. Nützlich, wenn der Host nach einem Schlüssel Verarbeitungszeit benötigt.

Parameter:

  • key (ControlKey) – Die zu sendende Kontrolltaste.
  • delayMS (int) – Millisekunden für den Ruhezustand nach dem Senden des Schlüssels.
  • options (CommandOptions, optional) – Timeout und Wartemodus.

Wartemethoden

TerminalResultCode WaitScreenReady(CommandOptions options = null)

Wartet, bis die Tastatur des Terminals entsperrt ist und der Bildschirm für Eingaben bereit ist.

Parameter:

  • options (CommandOptions, optional) – Timeout und Wartemodus. Legen Sie Timeout fest, um zu steuern, wie lange gewartet werden soll.
TerminalResultCode WaitText(string text, TerminalField criteria = null, bool matchCase = true, CommandOptions options = null)

Wartet, bis der angegebene Text auf dem Terminalbildschirm angezeigt wird (oder in einem bestimmten Feld, wenn criteria angegeben wird).

Parameter:

  • text (string) – Text, auf den gewartet werden soll.
  • criteria (TerminalField, optional) – Wenn diese Option festgelegt ist, wird auf den Text im entsprechenden Feld gewartet. Bei null wird auf den Text an einer beliebigen Stelle auf dem Bildschirm gewartet.
  • matchCase (bool, optional) – Vergleich unter Berücksichtigung der Groß-/Kleinschreibung. Standard: true.
  • options (CommandOptions, optional) – Timeout und Wartemodus.
TerminalResultCode FindTextInScreen(string text, CursorPosition startPosition, bool ignoreCase, out CursorPosition position, CommandOptions options = null)

Sucht den Bildschirm nach einer Textzeichenfolge, die mit startPosition beginnt.

Parameter:

  • text (string) – Text, nach dem gesucht werden soll.
  • startPosition (CursorPosition) – Startposition für die Suche.
  • ignoreCase (bool) – Suche ohne Berücksichtigung von Groß-/Kleinschreibung.
  • position (out CursorPosition) – Erhält die Koordinaten, an denen Text gefunden wurde.
  • options (CommandOptions, optional) – Timeout und Wartemodus.

Gibt Folgendes zurück: TerminalResultCode.Success wenn gefunden. gibt aus (oder gibt InvalidCoordinates zurück, wenn nicht gefunden.

Verbindungslebenszyklus

TerminalResultCode Disconnect(CommandOptions options = null)

Trennt die Verbindung vom Host, während das Verbindungsobjekt aktiv bleibt (entwirft nicht). Selten erforderlich – Dispose() übernimmt die Bereinigung.

void Shutdown()

Alias für Dispose(). Trennt Hostprozesse, stoppt sie und gibt Ressourcen frei.

void Dispose()

Trennt die Sitzung, beendet alle Host-broker-Prozesse (x86/x64) und gibt alle verwalteten und nicht verwalteten Ressourcen frei.

Erweitert (Advanced)

TerminalResultCode OverrideScreenResolution(ScreenSize screenSize, CommandOptions options = null)

Überschreibt die Bildschirmabmessungen des Terminals. Verwendung, wenn der Host eine nicht standardmäßige Bildschirmgröße erfordert.

Parameter:

  • screenSize (ScreenSize) – Zielbildschirmababmessungen.
  • options (CommandOptions, optional) – Timeout und Wartemodus.

Optionen und Konfigurationsklassen

CommandOptions

Steuert das Timeout- und Screen-Wait-Verhalten für einzelne Terminalvorgänge.

EigenschaftenTypStandardBeschreibung
Timeoutint30000Millisekunden, die gewartet werden müssen, bevor ein Timeout-Fehler ausgegeben wird. Bei 0 oder negativ wird auf den Dienststandard von 30.000 ms zurückgegriffen.
WaitTypeWaitModeREADYSo wird vor der Ausführung des Vorgangs auf den Bildschirm gewartet.
// 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

Programmgesteuertes Konfigurationsobjekt für Terminalverbindungen. Wird mit GetConnection(ConnectionData) und GetSshConnection() verwendet .

EigenschaftenTypStandardBeschreibung
ProviderTypeTerminalProviderTypeUiPathNewTerminalemulatoranbieter. Verwenden Sie UiPathNew für direkte TCP/SSH-Verbindungen.
ConnectionTypeConnectionTypeProfileSo wird die Verbindung hergestellt: Address (Host/Port – erforderlich für UiPathNew), Profile (Anbieterprofildatei), LowLevel (EHLLAPI).
ConnectionProtocolCommunicationTypeTELNETProtokoll: TELNET, SSH oder HPVT.
TerminalTypeTerminalTypeTerminal3270Terminalemulationstyp.
HoststringHostname oder IP-Adresse des Zielhosts.
Portint23TCP-Port. Der Standardwert ist 23 (Telnet). SSH verwendet in der Regel 22.
ShowTerminalbooltrueOb das Terminalfenster angezeigt werden soll (falls vom Anbieter unterstützt).
EnableSSLboolfalseAktivieren Sie SSL/TLS für die Verbindung.
ProfilestringPfad zur Anbieterprofildatei (für profilbasierte Anbieter: Attachmate, IBM, BlueZone usw.).
InProcessModeboolfalseAusführen des Terminalanbieters im Prozess (nur generisch/EHLLAPI).
AttachExistingboolfalseAn eine bereits ausgeführte Terminalsitzung anhängen. true -Wert ist nur für den Attachmate -Anbieter verfügbar
ProxyTypeProxyTypeNoneProxytyp (Keine, HTTP, SockS4, SockS5).
ProxyHoststringHostname des Proxyservers.
ProxyPortintProxyserverport.
ProxyUserstringBenutzername für Proxy-Authentifizierung.
ProxyPasswordstringProxy-Authentifizierungskennwort.
InternalEncodingstringÜberschreibung der Zeichencodierung (z. B. "IBM037" für EBCDIC).
EhllDllstringPfad zur EHLLAPI-DLL (generischer Anbieter).
EhllFunctionstring"hllapi"Name der EHLLAPI-Einstiegspunktfunktion.
EhllSessionstring"A"Bezeichner der EHLLAPI-Sitzung.
EhllEnhancedbooltrueVerwenden Sie den erweiterten EHLLAPI-Modus.
EhllEncodingstringZeichencodierung, die für die EHLLAPI-Textkommunikation verwendet wird (generischer Anbieter). Standardmäßig wird die konfigurierte Codierung des Anbieters verwendet, wenn sie nicht festgelegt oder nicht erkannt wird.
EhllBasicModeboolfalseBei true wird die Feldanalyse beim Bildschirmabruf deaktiviert. Bildschirmdaten werden nur als Rohtext ohne Feldmetadaten zurückgegeben. Wird für Leistung verwendet, wenn kein Zugriff auf Feldebene erforderlich ist (generischer Anbieter).
LuNamestringFür 3270/5250: Der Name der Sna Logical Units (LU) zur Anforderung vom Host. Für VT/Wyse/Linux: die Terminal-Antwortzeichenfolge (verwenden Sie ^M für die Wagenrückführung. Hat keine Auswirkungen auf Nicht-SNC- oder Nicht-VT-Verbindungen.
TerminalModelint0Bezeichner des Terminalmodells. Verwenden Sie den Aufzählungswert für das aktive TerminalType: TerminalModes3270 (3270), TerminalModes5250 (5250, Standardeinstellung ist IBM_5250_3477_FC bei 0), TTVtTermId (VT), TerminalModesHP (HP), TerminalModesWyse (Wyse), TerminalModesLinux (Linux).

TerminalField

Identifiziert ein Feld oder einen Bildschirmbereich für Lese-/Schreibvorgänge.

EigenschaftenTypBeschreibung
RowStartintStartzeile (1-basiert oder -1 für nicht festgelegt).
ColStartintStartspalte (1-basiert oder -1 für nicht festgelegt).
RowEndintEndzeile für Bereichsvorgänge (-1 für nicht festgelegt).
ColEndintEndspalte für Bereichsvorgänge (-1 für nicht festgelegt).
LabeledBystringText der Beschriftung, die dem Feld vorausgeht.
FollowedBystringText der Beschriftung, die dem Feld folgt.
IndexintNullbasierter Feldindex (-1 für nicht festgelegt).

CursorPosition

Stellt eine Zeilen-/Spaltenposition auf dem Terminalbildschirm dar.

EigenschaftenTypBeschreibung
RowintZeile (1-basiert). Standard: 1.
ColumnintSpalte (1-basiert). Standard: 1.

Enumerationsreferenz

WaitMode: NONE, READY, COMPLETE

  • NONE – Nicht warten; sofort ausführen.
  • READY – Vor der Ausführung auf die Entsperrung der Tastatur warten.
  • COMPLETE – Vor der Ausführung warten, bis alle Bildschirmdaten eingetroffen sind.

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

  • UiPathNew – Direkte TCP/SSH-Verbindung ohne Emulator eines Drittanbieters. Unterstützt Telenet, SSH und HPVT.
  • TandemHLL – Tandem-/NonStop-Hostsitzungen überTHLLAPI (THLLW3.DLL / THLLW6.DLL, Attachmate Reflection 6530). Verwendet ConnectionType.LowLevel und die gleichen Ehll* -Felder wie Generic. Farbattributdaten werden nicht unterstützt. GetColorAtPosition gibt immer Color.LightGreen zurück.

CommunicationType: TELNET, SSH, HPVT

ConnectionType: Address, Profile, LowLevel

  • Address – Verbindung über Host/Port. Erforderlich bei Verwendung ProviderType.UiPathNew.
  • Profile – Verbinden Sie sich über eine anbieterspezifische Profildatei (Pfad über Profile festgelegt).
  • LowLevel – Verbindung über EHLLAPI (generischer Anbieter) oderTHLLAPI (TandemHLL-Anbieter).

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

ControlKey (ausgewählte Werte): 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 (verwenden mit 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 (verwenden mit 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 (verwenden mit 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 (verwenden mit TerminalType.TerminalHP): HP_2372A (0), HP_70092 (1), HP_70094 (2)

TerminalModesWyse (verwenden mit 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 (verwenden mit 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)

Gängige Muster

Melden Sie sich bei einem 3270-Host an und lesen Sie ein Feld

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

SSH-Verbindung mit sicheren Anmeldeinformationen

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

Verwenden Sie die Automatisierung einer Terminalsitzung, die von einem Emulator eines Drittanbieters verwaltet wird und eine EHLLAPI-Schnittstelle verfügbar macht (z. B. eine laufende IBM PCOMM- oder BlueZone-Sitzung, auf die über ihre EHLLAPI-DLL zugegriffen wird).

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

Auf Verarbeitung warten und ein Ergebnisfeld lesen (IBM Personal Communications/gespeichertes Profil)

Verwendung, wenn die Verbindung in einer IBM PCOMM-Workspace-Datei (.ws) vorkonfiguriert ist. PCOMM muss auf der Robotermaschine installiert sein.

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

Erkennt eine Feldfarbe für bedingte Logik

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

Stellen Sie eine Verbindung mit einem Tandem-/NonStop-Host überTHLLAPI her

Verwenden Sie diese Option beim Automatisieren einer Tandem-/NonStop-Sitzung, die über Attachmate Reflection 6530 ausgeführt wird. Der EhllFunction -Einstiegspunkt fürTHLLAPI ist "thllapi" (nicht "hllapi"). Farbattributdaten sind für diesen Anbieter nicht verfügbar.

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

War diese Seite hilfreich?

Verbinden

Benötigen Sie Hilfe? Support

Möchten Sie lernen? UiPath Academy

Haben Sie Fragen? UiPath-Forum

Auf dem neuesten Stand bleiben