アプリケーションからディスプレイ端末へのキー入力エミュレーションと、オペレータによるディスプレイ端末へのキー入力横取りを行うインタフェースです。
構文 | object. SendKeys ( str [,row,column] ) object. SendKeysAsync ( str [,row,column] ) | ||
引数 | 引数は次のものです。 | ||
項目 | 型 | 内容 | |
str | 文字列 | ホストへ送信する文字列を指定します。 | |
row | 整数 | 入力開始の行位置を指定します。 | |
column | 整数 | 入力開始の桁位置を指定します。 | |
二重発行動作 | キャンセル | ||
復帰値 | 0:正常/その他の値:異常 | ||
対象エミュレータ | |||
関連プロパティ | WaitTime,WaitStatusTime,CodeConvType |
ディスプレイ端末に対するキー入力をエミュレーションします。
メソッドの処理にはプロパティの「WaitTime(処理の応答待ち時間)」「WaitStatusTime(ホスト状態の監視時間)」指定値が使用され、「キー入力可能」状態を待ち合わせてキー送信処理を開始します。
引数「str」は「CodeConvType(1バイト系コード変換種別)」プロパティに従ってコード変換されます。
入力はメソッドの引数「row、column」の指定位置から開始します。
引数「row」「column」は合わせて省略が可能です。
「row、column」の省略時には現在のカーソル位置から入力を開始します。
入力の際には、実際の入力と同様にカーソルも移動します。
引数「str(送信文字列)」には、文字列だけではなく、エミュレータキーとホスト漢字コードを記述する事ができます。
引数「str(送信文字列)」にエミュレータキーやホスト漢字コードを記述する場合には“[ENTER]”や“[41A1]”のようにカッコ[]で囲みます。
カッコ内には一つの項目のみ指定可能です。
カッコ記号のみ入力する場合には“[[”のようにカッコを重ねて書きます。
なお、この記述形式は、入力系メソッド(SendKeys、PutScreen、PasteScreen、~Async)において同様に使用します。
「カーソル制御キー」は以下の様に記述します。
エミュレータキー | 記述形式 |
---|---|
→ | [RIGHT] |
← | [LEFT] |
↑ | [UP] |
↓ | [DOWN] |
→→ | [RIGHT2] |
←← | [LEFT2] |
TABキー | [TAB] |
BACK TABキー | [BACKTAB] |
右寄せTAB | [PACKRIGHT1] |
改行キー | [RETURN] |
前行キー | [PREV] |
HOMEキー | [HOME] |
INSERT MODEキー | [INSERT] |
DELETEキー | [DELETE] |
ERASE INPUTキー | [ERASEINPUT] |
ERASE EOFキー | [ERASEEOF] |
+入力キー | [+ENTER] |
右寄せ+入力キー | [PACKRIGHT2] |
「プログラム・アテンション・キー」は以下の様に記述します。
エミュレータキー | 記述形式 |
---|---|
CLEARキー | [CLEAR] |
ENTERキー | [ENTER] |
PF1キー~PF24キー | [PF1]~[PF24] |
PA1キー~PA3キー | [PA1]~[PA3] |
「ローカルコピーキー」は以下の様に記述します。
エミュレータキー | 記述形式 |
---|---|
PRINTキー | [PRINT] |
DEVICE CANCELキー | [DEVCAN] |
「その他のエミュレータキー」は以下の様に記述します。
エミュレータキー | 記述形式 |
---|---|
RESETキー | [RESET] |
CURSOR SELECTキー | [CURSORSEL] |
DUPキー | [DUPLICATE] |
FIELD MARKキー | [FIELDMARK] |
SYSREQキー | [SYSREQ] |
ATTNキー | [ATTN] |
TESTキー | [TEST] |
「拡張機能キー」は以下の様に記述します。
エミュレータキー | 記述形式 |
---|---|
エミュレータの終了 | [EEND1] |
強制終了 | [EEND2] |
上記以外のエミュレータキーはサポートしません。
「拡張機能キー」のエミュレータ終了キー([EEND1]、[EEND2])に対するエミュレータの動作は、ホスト接続時の接続パス状態によって異なります(「7.3.1 ホストへの接続/切断」を参照)。
■未使用の接続パスへ接続した場合
ホスト切断の権利はアプリケーションが持っているため、エミュレータ終了キーによる終了動作は行われません(エミュレータ終了キーを送信した場合、キーは無視されます)。
アプリケーションからの「Close、~Async(ホスト切断)」メソッドによってエミュレータも終了します。
■エミュレータが使用中の接続パスへ乗り入れた場合
パス切断の権利はエミュレータが持っています。
エミュレータ終了キーを送信した場合、エミュレータの終了と共にパスは切断されます。
また、乗り入れていたアプリケーションはホスト切断状態となります。
なお、文字列の入力開始後はキーボードロック状態の監視を行いません。
そのため、入力中にキーボードロック状態が発生する場合(プログラム・アテンション・キーを文字列の途中に指定、フィールド脱出によるアテンションの発生 等)、その後に続く文字の入力が正常に行われない場合があります。
<プログラム・アテンション・キー+文字列を指定した例(誤)>
SendKeys (“LOGON TSS[ENTER] ID/PASSWORD[ENTER]”)
↑下線付き部分の文字列入力が保証されません。
上記のような文字列を送信する場合には、次のように文字列を分けて送信してください。
<プログラム・アテンション・キー+文字列を分割した例(正)>
SendKeys (“LOGON TSS[ENTER]”)
SendKeys (“ID/PASSWORD[ENTER]”)
構文 | object_ ResultSendKeys ( result ) | ||
引数 | 引数は次のものです。 | ||
項目 | 型 | 内容 | |
result | 整数 | SendKeysAsyncメソッドの処理結果 | |
復帰値 | 意味を持ちません。 | ||
対象エミュレータ |
「SendKeysAsync(キー入力)」メソッドによる通信状態待機処理の完了時に発生します。
イベントの引数として、キー入力結果が通知されます。
構文 | object. InterceptKeyFlag [=TRUE/FALSE ] |
データ型 | 整数 |
アクセス方法 | 参照/設定 |
設定値範囲 | TRUE:キー横取りON FALSE:キー横取りOFF |
初期値 | FALSE |
対象エミュレータ |
ディスプレイ端末へのキー入力を横取りする「EmuKeyDown(キー入力横取り)」イベントのON/OFFスイッチです。
値は設定、参照する事が可能であり、ホスト接続中にも変更が可能です。
初期値として「FALSE」がセットされます。
設定値が「TRUE」の場合、オペレータによって行われるキー入力はディスプレイ端末へ入力されず、「EmuKeyDown(キー入力横取り)」イベントによりアプリケーションに通知されます。
構文 | object_ EmuKeyDown ( row,column,keytype,str ) | ||
引数 | 引数は次のものです。 | ||
項目 | 型 | 内容 | |
row | 整数 | 入力位置の行。 | |
column | 整数 | 入力位置の桁。 | |
keytype | 整数 | 「str」に格納される文字/キーの種別。 | |
str | 文字列 | ディスプレイ端末へ入力された文字/キーが格納されます。 | |
復帰値 | 意味を持ちません。 | ||
対象エミュレータ | |||
関連プロパティ | InterceptKeyFlag,CodeConvType |
ディスプレイ端末へのキー入力を横取りして、イベントによりアプリケーションへ通知します。
「InterceptKeyFlag(キー入力横取りフラグ)」プロパティが「TRUE(キー入力横取りON)」であり、同一接続路で動作中のディスプレイ端末へオペレータがキー入力動作を行った場合にメソッドが発生します。
引数「keytype」へは「str」に格納される文字/キーの種別が格納されます。
0:マウスによるカーソル移動時
1:1バイト文字(“A” 等)
2:2バイト文字(“あ” 等)
3:ホスト漢字コード(“[41A1]” 等)
4:エミュレータキー(“[ENTER]” 等)
マウスによるカーソル移動時、引数「str」は空となります。
注意
「SendKeys」等の入力系メソッド以外のメソッド(GetScreen等)は、「EmuKeyDown(キー入力横取り)」イベント内で使用できません。
■「EmuKeyDown(キー入力横取り)」イベントが扱う入力
文字入力とエミュレータキー(「SendKeys」等の入力系メソッドでサポートしているものに限ります)
IMEを使用した入力
マウスによるカーソル移動
■「EmuKeyDown(キー入力横取り)」イベントが扱わない入力
入力系メソッドを使用したアプリケーションからの入力
メニュー操作
クリップボードからの文字列貼り付け
ディスプレイ端末へのキー入力は1キーごとに通知され、引数「key」へ文字として格納されます。
IMEを使用した漢字入力や、クリップボードからの貼り付けが行われた場合も、入力される文字列を1キーごとに分けて通知します。
マウスによるカーソル移動時には、引数「row、column」のみが通知され、引数「str」は空、引数「Type」は0がセットされます。
エミュレータキーが押下された場合や、ホスト漢字コードが入力された場合には、「SendKeys、~Async(キー入力)」メソッドで扱う文字ベースの記述(“[ENTER]”、“[41A1]”の様に‘[’と‘]’で囲まれた文字列)で格納されます。
引数「str」に格納される1バイト文字はプロパティの「CodeConvType(1バイト系コード変換種別)」によってホストコードからJISコードへ変換され、文字が変換エラーを起こす場合は‘-’(ハイフン)に変換されます。
受け取った引数「str」を「SendKeys、~Async(キー入力)」メソッド等に渡すことにより横取りしたキーをディスプレイ端末に返すことができます。