パーソナル・コミュニケーションズ(PCOMM) と WinActor の相性は◎です。
質問ではありませんが、パーソナルコミュニケーションズ(PCOMM)とWinactorの相性が悪いので、違うRPAを使うような記事を見かけましたので、本当は、相性抜群なことを記載しておきます。
IBMからホスト・アクセス・クラス・ライブラリーが用意されています。(Excelのマクロでも使用可能)
このライブラリーを使用することで、簡単に、PCOMMを制御することができます。
VBScriptを使用することで、下記のことが簡単にできます。
1)カーソルの位置(行, 列)を指定して、文字を送信
2)画面の範囲(行, 列開始, 行, 列終了 )を指定して、表示されている文字を取得
3)PCOMM固有の実行キー、PFキーの送信
4)PCOMM画面が、入力可能状態か確認(ホストの動きが遅いと待ちが発生しますので、入力可能になるまで、待機するときに使用)
上記のことができれば、PCOMMの制御は簡単に行えます。
PCOMM用のノードを作成しましたが、どのようにUPするのかわかりませんので、テキストで残しておきます。
1)VBScript
myGYO = !行!
myRETU = !列!
myMOJI = !文字列!
Dim oCONL, oPSOBJ
Set oPSOBJ = CreateObject("PCOMM.autECLPS")
Set oCONL = CreateObject("PCOMM.autECLConnList")
oCONL.Refresh
' PCOMMのハンドルを取得
For i = 1 To oCONL.Count
If oCONL(i).ConnType = "DISP3270" Then
oPSOBJ.SetConnectionByHandle (oCONL(i).Handle)
Exit For
End If
Next
oPSOBJ.SetCursorPos myGYO, myRETU '指定した場所にカーソル移動
oPSOBJ.SendKeys myMOJI '文字列の送信
Set oPSOBJ = Nothing
Set oCONL = Nothing
2) VBScript
myGYO = !行!
myST = !開始!
myED = !終了!
myMOJI = ""
Dim oCONL, oPSOBJ
Set oPSOBJ = CreateObject("PCOMM.autECLPS")
Set oCONL = CreateObject("PCOMM.autECLConnList")
oCONL.Refresh
' PCOMMのハンドルを取得
For i = 1 To oCONL.Count
If oCONL(i).ConnType = "DISP3270" Then
oPSOBJ.SetConnectionByHandle (oCONL(i).Handle)
Exit For
End If
Next
myMOJI = oPSOBJ.GetTextRect(myGYO, myST, myGYO, myED) '指定した範囲の文字列を取得
Set oPSOBJ = Nothing
Set oCONL = Nothing
setUmsVariable $文字列$ , myMOJI
3)VBScript
Dim oCONL, oPSOBJ
Set oPSOBJ = CreateObject("PCOMM.autECLPS")
Set oCONL = CreateObject("PCOMM.autECLConnList")
oCONL.Refresh
' PCOMMのハンドルを取得
For i = 1 To oCONL.Count
If oCONL(i).ConnType = "DISP3270" Then
oPSOBJ.SetConnectionByHandle (oCONL(i).Handle)
Exit For
End If
Next
'下の2行で実行キー送信 PFキーは、[PF1]..[PF24] を送信
oPSOBJ.SendKeys ("[FLDEXT]")
oPSOBJ.SendKeys ("[ENTER]")
Set oPSOBJ = Nothing
Set oCONL = Nothing
4)VBScript
Dim oOIAOBJ, oPSOBJ
Dim myWAIT
Set oOIAOBJ = CreateObject("PCOMM.autECLOIA")
Set oCONL = CreateObject("PCOMM.autECLConnList")
oCONL.Refresh
For i = 1 To oCONL.Count
If oCONL(i).ConnType = "DISP3270" Then
oOIAOBJ.SetConnectionByHandle (oCONL(i).Handle)
Exit For
End If
Next
'0:使用可能
'それ以外:使用不可
myWAIT = oOIAOBJ.InputInhibited
Set oOIAOBJ = Nothing
Set oCONL = Nothing
setUmsVariable $状態$ , myWAIT