ページの先頭行へ戻る
WSMGR ソフトウェア開発キット V9 使用手引書
FUJITSU Software

8.3.2 キー入力制御

アプリケーションからディスプレイ端末へのキー入力エミュレーションと、オペレータによるディスプレイ端末へのキー入力横取りを行うインタフェースです。

8.3.2.1 キー入力SendKeys、SendKeysAsyncメソッド

構文

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])

8.3.2.2 キー入力完了通知ResultSendKeysイベント

構文

object_ ResultSendKeys ( result )

引数

引数は次のものです。

項目

内容

result

整数

SendKeysAsyncメソッドの処理結果

復帰値

意味を持ちません。

対象エミュレータ

「SendKeysAsync(キー入力)」メソッドによる通信状態待機処理の完了時に発生します。

イベントの引数として、キー入力結果が通知されます。

8.3.2.3 キー入力横取りフラグInterceptKeyFlagプロパティ

構文

object. InterceptKeyFlag [=TRUE/FALSE ]

データ型

整数

アクセス方法

参照/設定

設定値範囲

TRUE:キー横取りON

FALSE:キー横取りOFF

初期値

FALSE

対象エミュレータ

ディスプレイ端末へのキー入力を横取りする「EmuKeyDown(キー入力横取り)」イベントのON/OFFスイッチです。

値は設定、参照する事が可能であり、ホスト接続中にも変更が可能です。

初期値として「FALSE」がセットされます。

設定値が「TRUE」の場合、オペレータによって行われるキー入力はディスプレイ端末へ入力されず、「EmuKeyDown(キー入力横取り)」イベントによりアプリケーションに通知されます。

8.3.2.4 キー入力横取り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(キー入力横取り)」イベントが扱う入力

■「EmuKeyDown(キー入力横取り)」イベントが扱わない入力

ディスプレイ端末へのキー入力は1キーごとに通知され、引数「key」へ文字として格納されます。

IMEを使用した漢字入力や、クリップボードからの貼り付けが行われた場合も、入力される文字列を1キーごとに分けて通知します。


マウスによるカーソル移動時には、引数「row、column」のみが通知され、引数「str」は空、引数「Type」は0がセットされます。


エミュレータキーが押下された場合や、ホスト漢字コードが入力された場合には、「SendKeys、~Async(キー入力)」メソッドで扱う文字ベースの記述(“[ENTER]”、“[41A1]”の様に‘[’と‘]’で囲まれた文字列)で格納されます。


引数「str」に格納される1バイト文字はプロパティの「CodeConvType(1バイト系コード変換種別)」によってホストコードからJISコードへ変換され、文字が変換エラーを起こす場合は‘-’(ハイフン)に変換されます。

受け取った引数「str」を「SendKeys、~Async(キー入力)」メソッド等に渡すことにより横取りしたキーをディスプレイ端末に返すことができます。