UiPath Documentation
activities
latest
false
UI Automation アクティビティ
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。

ターミナルのコード化されたオートメーション API

プログラムによるターミナル セッション制御用のターミナル アクティビティ パッケージのコード化されたオートメーション API。

UiPath.Terminal.Activities

ターミナル エミュレーション セッションを自動化するためのコード化されたワークフロー API です。BlueZone、IBM PCOMM、Attachmate、または直接 TCP/SSH 接続を介して IBM 3270/5250、VT、HP、ANSI、Wyse などのレガシー端末システムへの接続を確立し、ターミナル画面をプログラムによって操作するためのメソッドを提供します。

サービス アクセサー: terminal (ITerminalService 型) 必要なパッケージ: project.json 依存関係内の "UiPath.Terminal.Activities": "*"

自動インポートされる名前空間​

このパッケージをインストールすると、コード化されたワークフローで以下の名前空間が自動的に利用可能になります。

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

サービスの概要​

terminal サービスは、ターミナル接続を開いて TerminalConnection オブジェクトを返すファクトリ メソッドを提供します。接続オブジェクトは、すべてのターミナル操作 (画面の読み取り、フィールドへのアクセス、キーの送信、待機) の API サーフェスです。

これは接続ベースの API です。

  1. サービス メソッド (GetConnection / GetSshConnection) を呼び出し、開いて接続します。
  2. 返された TerminalConnection を使用してターミナルの操作を実行します。
  3. 操作が完了したら接続を破棄します (または using ステートメントを使用します)。

コード化されたワークフロー モードでは、すべての TerminalConnection メソッドは、失敗時にエラー コードを返すのではなく、TerminalConnectionException をスローします。つまり、戻り値を確認する必要はなく、例外を処理するだけで済みます。

接続方法​

TerminalConnection GetConnection(string connectionString)​

シリアル化された接続文字列を使用してターミナル接続を開きます。接続文字列では、プロバイダーの種類、ホスト、ポート、プロトコルなどの設定をエンコードします。有効な文字列を生成するには、[ターミナル セッション] XAML アクティビティの [接続の設定] ダイアログを使用します。

パラメーター​
  • connectionString (string) — シリアル化された接続文字列です。例: 取得するには、[ターミナル セッション] アクティビティを設定し、ConnectionString プロパティの値をコピーします。

戻り値: TerminalConnection — 開いている、接続済みのターミナル セッション。IDisposable を実装します。using ステートメント内で使用します。

スローされる例外: タイムアウト内に接続を確立できない場合、TerminalConnectionException がスローされます。

TerminalConnection GetConnection(ConnectionData connectionData)​

ConnectionData オブジェクトを使用してターミナル接続を開きます。シリアル化された接続文字列を使用せずに、プログラムによって設定できます。

パラメーター​
  • connectionData (ConnectionData) — プロバイダー、ホスト、ポート、プロトコル、およびエミュレーションの設定を指定する設定オブジェクトです。

戻り値: TerminalConnection — 開いている、接続済みのターミナル セッション。

スローされる例外: 接続を確立できない場合、TerminalConnectionException がスローされます。

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

明示的な資格情報を使用して SSH ターミナル接続を開きます。connectionData で ProviderType = UiPathNew と ConnectionProtocol = SSH を指定する必要があります。

パラメーター​
  • connectionData (ConnectionData) — 接続の設定です。ProviderType = TerminalProviderType.UiPathNew および ConnectionProtocol = CommunicationType.SSH が必要です。
  • sshUser (string) — SSH ユーザー名です。
  • sshPassword (SecureString) — SSH パスワードです。SecureString 変数 ([資格情報を取得] などから取得) を使用して、プレーン テキストで公開されないようにします。

戻り値: TerminalConnection — 開いている、接続済みの SSH ターミナル セッション。

スローされる例外: 接続に失敗した場合、TerminalConnectionException がスローされます。ProviderType または ConnectionProtocol が無効な場合は、ArgumentException がスローされます。

TerminalConnection​

TerminalConnection は、すべてのサービス メソッドによって返されるハンドルです。ターミナルでのすべての対話操作を提供し、IDisposable を実装します。

注:

この型は IDisposable を実装します。必ず、using ステートメント内で使用するか、Dispose() / Shutdown() を明示的に呼び出してください。破棄すると、セッションが切断され、すべてのホスト プロセスが終了します。

プロパティ​

プロパティ入力説明
Connectedbooltrue セッションが現在ホストに接続されているかどうかを示します。
ConnectionStringstringこの接続の確立に使用する、シリアル化された接続文字列です。
DefaultCmdOptionsCommandOptions既定のタイムアウト オプションと待機モード オプションです。明示的に上書きされない場合、すべての操作に適用されます。

イベント​

イベント説明
TerminalScreenChangedターミナル画面の内容が変更されたときに生成されます。
TerminalFieldChangedフィールドの値が変更されたときに生成されます。
TerminalCursorChangedカーソル位置が変更されたときに生成されます。
TerminalConnectionChanged接続ステータスが変化したとき (接続/切断など) に生成されます。
TerminalErrorRaisedターミナル エラーが非同期で発生した場合に生成されます。

画面読み取りメソッド​

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

ターミナル画面に表示されているテキスト コンテンツ全体を読み取ります。

パラメーター​
  • text (out string) — 全画面表示のテキストを受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。既定値は DefaultCmdOptions です。

戻り値: TerminalResultCode.Success (コード化されたワークフロー モードで失敗した場合は TerminalConnectionException がスローされます)。

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

画面から、criteria で定義した位置から始まるテキストを読み取ります。任意で、読み取る文字数を制限します。

パラメーター​
  • criteria (TerminalField) — RowStart / ColStart を使用して開始位置を定義します。
  • length (int?、任意) — 読み取る文字の数です。null を指定すると、行末まで読み取ります。
  • text (out string) — 指定した位置から読み取ったテキストを受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode GetScreenArea(TerminalField criteria, out string text, CommandOptions options = null)​

criteria で定義した、画面の四角形の領域からテキストを読み取ります。

パラメーター​
  • criteria (TerminalField) — RowStart、ColStart、RowEnd、ColEnd を使用して領域を定義します。
  • text (out string) — 指定した領域のテキストを受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode GetColorAtPosition(int row, int column, out Color color, CommandOptions options = null)​

指定した位置にある文字の前景色を取得します。

パラメーター​
  • row (int) — 行を指定します (1 から開始)。
  • column (int) — 列を指定します (1 から開始)。
  • color (out Color) — System.Drawing.Color の値を受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
ScreenData GetScreen(CommandOptions options = null)​

すべてのフィールド属性と文字データを含む生の画面データ オブジェクトを返します。

パラメーター​
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。

戻り値: 画面の内容とフィールドのメタデータを含む ScreenData。接続されていない場合は null になります。

フィールド メソッド​

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

条件 (ラベル、インデックス、または座標) によって指定したフィールドのテキスト コンテンツを読み取ります。

パラメーター​
  • field (TerminalField) — フィールドの識別情報です。LabeledBy、FollowedBy、Index、または座標プロパティを設定します。
  • text (out string) — フィールドのテキストを受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode SetField(TerminalField criteria, string text, CommandOptions options = null)​

条件に一致するフィールドにテキストを書き込みます。

パラメーター​
  • criteria (TerminalField) — フィールドの識別情報です。LabeledBy、FollowedBy、Index、または座標プロパティを設定します。
  • text (string) — 書き込むテキストです。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。

カーソル メソッド​

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

ターミナルのカーソルの現在の行と列を取得します。

パラメーター​
  • cursorPosition (out CursorPosition) — カーソル位置 (Row、Column) を受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode MoveCursor(int row, int column, CommandOptions options = null)​

ターミナルのカーソルを指定した行と列に移動します。

パラメーター​
  • row (int) — 移動先の行を指定します (1 から開始)。
  • column (int) — 移動先の列を指定します (1 から開始)。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode MoveCursor(CursorPosition cursor, CommandOptions options = null)​

CursorPosition オブジェクトを使用してカーソルを移動します。

パラメーター​
  • cursor (CursorPosition) — 移動先の位置です。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。

キー送信メソッド​

TerminalResultCode SendKeys(string keys, CommandOptions options = null)​

現在のカーソル位置にあるテキスト文字列をターミナルに送信します。

パラメーター​
  • keys (string) — 送信するテキストです。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode SendKeysSecure(SecureString keys, CommandOptions options = null)​

SecureString をターミナルに送信します。文字列はメモリ内で復号されて送信され、その後、管理されていないバッファはゼロで消去されます。パスワードに使用します。

パラメーター​
  • keys (SecureString) — 送信する、セキュリティで保護されたテキストです。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode SendControlKey(ControlKey key, CommandOptions options = null)​

コントロール キー (Tab、F1–F24、Transmit/Enter、矢印キーなど) をターミナルに送信します。

パラメーター​
  • key (ControlKey) — 送信するコントロール キーです。列挙型 ControlKey をご覧ください。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode SendControlKey(ControlKey key, int delayMS, CommandOptions options = null)​

コントロール キーを送信し、処理を戻す前に指定したミリ秒数待機します。ホストでキーの後に処理時間が必要な場合に便利です。

パラメーター​
  • key (ControlKey) — 送信するコントロール キーです。
  • delayMS (int) — キーの送信後にスリープする時間です (ミリ秒)。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。

待機メソッド​

TerminalResultCode WaitScreenReady(CommandOptions options = null)​

ターミナルのキーボードのロックが解除され、画面の入力準備が整うまで待機します。

パラメーター​
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。待機する時間を制御するには、Timeout を設定します。
TerminalResultCode WaitText(string text, TerminalField criteria = null, bool matchCase = true, CommandOptions options = null)​

指定したテキストがターミナル画面 (または、criteria が指定されている場合は特定のフィールド) に表示されるまで待機します。

パラメーター​
  • text (string) — 待機するテキストです。
  • criteria (TerminalField、任意) — 設定されている場合、特定のフィールドのテキストを待機します。null の場合、画面上の任意の場所でテキストを待機します。
  • matchCase (bool、任意) — 比較の際に大文字と小文字を区別します。既定値は true です。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。
TerminalResultCode FindTextInScreen(string text, CursorPosition startPosition, bool ignoreCase, out CursorPosition position, CommandOptions options = null)​

startPosition から始まるテキスト文字列を画面で見つけます。

パラメーター​
  • text (string) — 検索するテキストです。
  • startPosition (CursorPosition) — 検索の開始位置です。
  • ignoreCase (bool) — 検索の際に大文字と小文字を区別しません。
  • position (out CursorPosition) — テキストが見つかった場所の座標を受け取ります。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。

戻り値: 見つかった場合は TerminalResultCode.Success。見つからなかった場合は例外がスローされます (または InvalidCoordinates が返されます)。

接続のライフサイクル​

TerminalResultCode Disconnect(CommandOptions options = null)​

接続オブジェクトを維持したまま (破棄せずに) ホストから切断します。必要になることはほとんどなく、Dispose() によってクリーンアップが処理されます。

void Shutdown()​

Dispose() のエイリアスです。切断してホスト プロセスをシャットダウンし、リソースを解放します。

void Dispose()​

セッションを切断し、ホストのすべてのブローカー プロセス (x86/x64) を終了し、すべての管理対象リソースと非管理対象リソースを解放します。

Advanced (カスタム)​

TerminalResultCode OverrideScreenResolution(ScreenSize screenSize, CommandOptions options = null)​

ターミナル画面のサイズを上書きします。ホストで標準以外の画面サイズが必要な場合に使用します。

パラメーター​
  • screenSize (ScreenSize) — 目的の画面サイズです。
  • options (CommandOptions、任意) — タイムアウトおよび待機モードです。

オプションと設定クラス​

CommandOptions​

個々のターミナル操作のタイムアウトと画面の待機の動作を制御します。

プロパティ入力既定 (Default)説明
Timeoutint30000タイムアウト エラーをスローするまで待機する時間です (ミリ秒)。0 または負の場合、サービスの既定値である 30000 ミリ秒にフォールバックします。
WaitTypeWaitModeREADY操作を実行する前に画面を待機する方法です。
// 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​

ターミナル接続の、プログラムによる設定オブジェクトです。GetConnection(ConnectionData) および GetSshConnection() とともに使用します。

プロパティ入力既定 (Default)説明
ProviderTypeTerminalProviderTypeUiPathNewターミナル エミュレーターのプロバイダーです。直接 TCP/SSH 接続には UiPathNew を使用します。
ConnectionTypeConnectionTypeProfile接続を確立する方法です。Address (ホスト/ポート — UiPathNew の場合に必要)、Profile (プロバイダー プロファイル ファイル)、LowLevel (EHLLAPI) を指定します。
ConnectionProtocolCommunicationTypeTELNETプロトコルです。TELNET、SSH、または HPVT を指定します。
TerminalTypeTerminalTypeTerminal3270ターミナル エミュレーションの種類です。
Hoststringターゲット ホストのホスト名または IP アドレスです。
Portint23TCP ポートです。既定値は 23 (Telnet) です。SSH では通常、22 を使用します。
ShowTerminalbooltrueターミナル ウィンドウを表示するかどうかを指定します (プロバイダーでサポートされている場合)。
EnableSSLboolfalse接続で SSL/TLS を有効化します。
Profilestringプロバイダー プロファイル ファイルへのパスです (Attachmate、IBM、BlueZone など、プロファイルベースのプロバイダーの場合に使用します)。
InProcessModeboolfalseターミナル プロバイダーをプロセス内で実行します (Generic/EHLLAPI のみ)。
AttachExistingboolfalseすでに実行中のターミナル セッションに接続します。true の値は、Attachmate プロバイダーでのみ利用可能です。
ProxyTypeProxyTypeNoneプロキシの種類です (None、HTTP、SOCKS4、SOCKS5)。
ProxyHoststringプロキシ サーバーのホスト名です。
ProxyPortintプロキシ サーバーのポートです。
ProxyUserstringプロキシの認証ユーザー名です。
ProxyPasswordstringプロキシの認証パスワードです。
InternalEncodingstring文字エンコードの上書きです (例: EBCDIC の場合は "IBM037")。
EhllDllstringEHLLAPI DLL へのパスです (汎用プロバイダー)。
EhllFunctionstring"hllapi"EHLLAPI のエントリ ポイント関数の名前です。
EhllSessionstring"A"EHLLAPI のセッション識別子です。
EhllEnhancedbooltrue拡張 EHLLAPI モードを使用します。
EhllEncodingstringEHLLAPI のテキスト通信に使用する文字エンコードです (汎用プロバイダー)。エンコードが設定されていないか認識できない場合、プロバイダーが設定したエンコードが既定で使用されます。
EhllBasicModeboolfalsetrue の場合、画面取得時のフィールドの解析が無効化されます。画面データは生のテキストとしてのみ返され、フィールドのメタデータは含まれません。フィールドレベルのアクセスが必要ない場合に、パフォーマンスを向上させるために使用します (汎用プロバイダー)。
LuNamestring3270/5250 の場合: ホストに要求する SNA 論理装置 (LU) 名です。VT/Wyse/Linux の場合: ターミナルのアンサーバック文字列です (キャリッジ リターンには ^M を使用します)。非 SNA 接続または非 VT 接続では無効です。
TerminalModelint0ターミナルのモデル識別子です。アクティブな TerminalType の列挙値を使用します。値は TerminalModes3270 (3270)、TerminalModes5250 (5250、0 の場合は既定で IBM_5250_3477_FC に設定)、TTVtTermId (VT)、TerminalModesHP (HP)、TerminalModesWyse (Wyse)、TerminalModesLinux (Linux) です。

TerminalField​

読み取り/書き込み操作の対象にするフィールドまたは画面領域を識別します。

プロパティ入力説明
RowStartint開始行です (1 から開始。設定しない場合は -1)。
ColStartint開始列です (1 から開始。設定しない場合は -1)。
RowEndint領域操作の最終行です (設定しない場合は -1)。
ColEndint領域操作の最終列です (設定しない場合は -1)。
LabeledBystringフィールドの前にあるラベルのテキストです。
FollowedBystringフィールドの後にあるラベルのテキストです。
Indexint0 から開始するフィールドのインデックスです (設定しない場合は -1)。

CursorPosition​

ターミナル画面の行/列の位置を表します。

プロパティ入力説明
Rowint行です (1 から開始)。既定値は 1 です。
Columnint列です (1 から開始)。既定値は 1 です。

列挙型のリファレンス​

WaitMode: NONE、READY、COMPLETE

  • NONE — 待機しません。直ちに実行します。
  • READY — 実行する前に、キーボードのロックが解除されるまで待機します。
  • COMPLETE — 実行する前に、すべての画面データが到着するまで待機します。

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

  • UiPathNew — サードパーティ製エミュレーターを使用しない直接 TCP/SSH 接続です。Telnet、SSH、HPVT をサポートします。
  • TandemHLL — THLLAPI (THLLW3.DLL / THLLW6.DLL、Attachmate Reflection 6530) を介した Tandem/NonStop のホスト セッションです。ConnectionType.LowLevel、および Generic と同じ Ehll* フィールドを使用します。色属性データはサポートされていません。GetColorAtPosition は常に Color.LightGreen を返します。

CommunicationType: TELNET、SSH、HPVT

ConnectionType: Address、Profile、LowLevel

  • Address — ホスト/ポートで接続します。ProviderType.UiPathNew を使用する場合は必須です。
  • Profile — プロバイダー固有のプロファイル ファイルを使用して接続します (パスは Profile で設定)。
  • LowLevel — EHLLAPI (汎用プロバイダー) または THLLAPI (TandemHLL プロバイダー) を介して接続します。

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

ControlKey (選択した値): Transmit、Tab、BackTab、Return、Escape、BackSpace、Home、End、Insert、Delete、PageUp、PageDown、Up、Down、Left、Right、F1–F24、Shift_F1–Shift_F12、Ctrl_F1–Ctrl_F12、Alt_F1–Alt_F12、PA1–PA3、Clear、Reset、Attention、EraseEOF、EraseInput、CursorSelect、FieldPlus、FieldMinus、FieldExit、Ctrl_A–Ctrl_Z、Tandem_Horizontal_Tab、Tandem_Vertical_Tab

TerminalModes3270 (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 (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 (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 (TerminalType.TerminalHP とともに使用): HP_2372A (0)、HP_70092 (1)、HP_70094 (2)

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

一般的なパターン​

3270 ホストにログインしてフィールドを読み取る​

[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 で接続する​

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

EHLLAPI インターフェイスを公開するサードパーティ エミュレーターによって管理されるターミナル セッション (たとえば、EHLLAPI DLL を介してアクセスする、実行中の IBM PCOMM または BlueZone セッション) を自動化する場合に使用します。

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

処理を待機し、結果のフィールドを読み取る (IBM パーソナル・コミュニケーションズ/保存済みのプロファイル)​

IBM PCOMM ワークスペース ファイル (.ws) で接続が事前に設定されている場合に使用します。PCOMM がロボット端末にインストールされている必要があります。

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

条件ロジックのフィールドの色を検出する​

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

THLLAPI を介して Tandem/NonStop ホストに接続する​

Attachmate Reflection 6530 を介して実行される Tandem/NonStop セッションを自動化する場合に使用します。THLLAPI の EhllFunction エントリ ポイントは "thllapi" です ("hllapi"ではありません)。このプロバイダーでは色属性データは使用できません。

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

このページは役に立ちましたか?

接続

ヘルプ リソース サポート

学習する UiPath アカデミー

質問する UiPath フォーラム

最新情報を取得