アプリケーションからディスプレイ端末へのキー入力エミュレーションと、オペレータによるディスプレイ端末へのキー入力の横取りを行うインタフェースです。
構文 | object. SendKeys ( str [,row,column] ) | ||
引数 | 引数は次のものです。 | ||
項目 | 型 | 内容 | |
str | 文字列 | ホストへ送信する文字列を指定します。 | |
row | 整数 | 入力開始の行位置を指定します。 | |
column | 整数 | 入力開始の桁位置を指定します。 | |
二重発行動作 | キャンセル | ||
復帰値 | 0:正常/その他の値:異常 | ||
対象エミュレータ | |||
関連プロパティ | WaitTime,WaitStatusTime,DspCodeConvType |
ディスプレイ端末に対するキー入力をエミュレーションします。
メソッドの処理にはプロパティの「WaitTime(処理の応答待ち時間)」「WaitStatusTime(ホスト状態の監視時間)」指定値が使用され、「キー入力可能」状態を待ち合わせてキー送信処理を開始します。
引数「str」は「DspCodeConvType(1バイト系コード変換種別)」プロパティに従ってコード変換されます。
入力はメソッドの引数「row、column」の指定位置から開始します。
引数「row」「column」は合わせて省略が可能です。
「row、column」の省略時には現在のカーソル位置から入力を開始します。
入力の際には、実際の入力と同様にカーソルも移動します。
引数「str(送信文字列)」には、文字列だけではなく、エミュレータキーとホスト漢字コードを記述することができます。
引数「str(送信文字列)」にエミュレータキーやホスト漢字コードを記述する場合には“[ENTER]”や“[41A1]”のようにカッコ[]で囲みます。
カッコ内には1つの項目のみ指定可能です。
カッコ記号のみ入力する場合には“[[”のようにカッコを重ねて書きます。
なお、この記述形式は、入力系メソッド(SendKeys、PutScreen、PasteScreen)で同様に使用します。
「カーソル制御キー」は以下のように記述します。
エミュレータキー | 記述形式 | エミュレータキー | 記述形式 |
---|---|---|---|
→ | [RIGHT] | 改行キー | [RETURN] |
← | [LEFT] | 前行キー | [PREV] |
↑ | [UP] | HOMEキー | [HOME] |
↓ | [DOWN] | INSERT MODEキー | [INSERT] |
→→ | [RIGHT2] | DELETEキー | [DELETE] |
←← | [LEFT2] | ERASE INPUTキー | [ERASEINPUT] |
TABキー | [TAB] | ERASE EOFキー | [ERASEEOF] |
BACK TABキー | [BACKTAB] | +入力キー | [+ENTER] |
右寄せTAB | [PACKRIGHT1] | 右寄せ+入力キー | [PACKRIGHT2] |
「プログラム・アテンション・キー」は以下のように記述します。
エミュレータキー | 記述形式 | エミュレータキー | 記述形式 |
---|---|---|---|
CLEARキー | [CLEAR] | PF1キー~PF24キー | [PF1]~[PF24] |
ENTERキー | [ENTER] | PA1キー~PA3キー | [PA1]~[PA3] |
「ローカルコピーキー」は以下のように記述します。
エミュレータキー | 記述形式 | エミュレータキー | 記述形式 |
---|---|---|---|
PRINTキー | [PRINT] | DEVICE CANCELキー | [DEVCAN] |
「その他のエミュレータキー」は以下のように記述します。
エミュレータキー | 記述形式 | エミュレータキー | 記述形式 |
---|---|---|---|
RESETキー | [RESET] | SYSREQキー | [SYSREQ] |
CURSOR SELECTキー | [CURSORSEL] | ATTNキー | [ATTN] |
DUPキー | [DUPLICATE] | TESTキー | [TEST] |
FIELD MARKキー | [FIELDMARK] |
|
|
「拡張機能キー」は以下のように記述します。
エミュレータキー | 記述形式 | エミュレータキー | 記述形式 |
---|---|---|---|
エミュレータの終了 | [EEND1] | 強制終了 | [EEND2] |
上記以外のエミュレータキーはサポートしません。
■OLEオートメーションを使用して新規にエミュレータを起動した場合
エミュレータ終了の権利はアプリケーションが持っているため、エミュレータ終了キー([EEND1]、[EEND2])を送信した場合、キーは無視されます。
■OLEオートメーションを使用して起動中のエミュレータに乗り入れた場合
エミュレータ終了の権利はエミュレータが持っているため、エミュレータ終了キー([EEND1]、[EEND2])の送信が可能です。
SendKeysによる入力中にキー入力不可状態となった場合、メソッドは実行を停止しエラーを返します。”処理中”が点灯しロック状態が発生した場合メソッドは再度WaitTime時間を上限として実行可能状態を待ち合わせします。
WaitTime時間を経過した場合メソッドはタイムアウトとなります。
そのため、SendKeysによる入力中にロック状態が発生する場合(プログラム・アテンション・キーを文字列の途中に指定、フィールド脱出によるアテンションの発生 等)、SendKeysメソッドその後に続く文字の入力が正常に行われない場合があります。
<プログラム・アテンション・キー+文字列を指定した例(誤)>
SendKeys ("LOGON TSS[ENTER] ID/PASWORD[ENTER]")
↑下線付き部分の文字列入力が保証されません。
上記のような文字列を送信する場合には、次のように文字列を分けて送信してください。
<プログラム・アテンション・キー+文字列を分割した例(正)>
SendKeys ("LOGON TSS[ENTER]") SendKeys ("ID/PASWORD[ENTER]")