ページの先頭行へ戻る
WSMGR for Web V7.2 使用手引書L20

20.2.15 画面情報の取得/貼り付け

ディスプレイ端末画面との書式付き入出力インタフェースです。
文字列の取得/貼り付け、画面属性情報の取得を行うことができます。


各メソッドとアプリケーション間でディスプレイ端末の画面データの受け渡しを行う場合、ディスプレイ端末の画面データを1文字列として扱います。
アプリケーションはディスプレイ端末の画面情報←→文字列の受け渡しについて書式指定できます。


■矩形フラグRectFlagプロパティ

構文

object. RectFlag [=TRUE/FALSE]

データ型

整数

アクセス方法

参照/設定

設定値範囲

TRUE:矩形複写

FALSE:行複写

初期値

FALSE

対象エミュレータ

「GetScreen、CopyScreen(画面情報の取得)」「PutScreen、PasteScreen(画面情報の貼り付け)」メソッドの複写動作(行複写/矩形複写)の指定です。
値は設定、参照することが可能です。
初期値は「FALSE」です。


「RectFlag」プロパティの指定により画面情報の取得、貼り付けメソッドの複写範囲が変化します(文中の複写開始、終了位置は画面情報の取得、貼り付けメソッドの引数として指定します)。


●画面情報取得時の複写範囲(「GetScreenCopyScreen」メソッド)

行複写を指定した場合には、ディスプレイ端末画面の右端と左端が複写の折り返し位置となり、複写の開始位置から終了位置までの画面情報を複写します。


矩形複写を指定した場合には、複写の開始位置と終了位置で表される矩形内の画面情報を複写します。


●画面情報貼り付け時の複写範囲(「PutScreenPasteScreen」メソッド)

行複写を指定した場合には、ディスプレイ端末画面の右端と左端が複写の折り返し位置となり、複写の開始位置から複写を開始します。


矩形複写を指定した場合には、複写の開始位置と終了位置で表される矩形内で複写を行います。


■複写方法CopyModeプロパティ

構文

object. CopyMode

データ型

整数

アクセス方法

参照/設定

設定値範囲

06

初期値

0:CX_TEXT_ALL

対象エミュレータ

「GetScreen、CopyScreen(画面情報の取得)」メソッドによりディスプレイ端末の画面情報を複写する情報種別(文字/フィールド内文字/属性)の指定です。


「CopyMode」プロパティの指定によって、複写処理は次のように変化します(文中の複写範囲とは画面情報の取得メソッドの引数として指定する複写開始位置から複写終了位置を、「RectFlag(矩形フラグ)」プロパティの複写動作指定に従って仕切った範囲です)。


●全文字データ複写CX_TEXT_ALL

複写範囲内の全文字データを複写します。


特殊文字の置き換えは以下の変換規則に従います。

文字

変換規則

NULL文字、制御コード

空白

1バイト文字の変換エラー

ハイフン'-'

フィールドアトリビュート位置

CopyFormatに従います

改行位置
(80桁目の文字の後ろ,矩形モード時は、矩形範囲右端文字の後ろ)

CopyFormatに従います

APL文字

DspCodeConvTypeに従いコード変換されたASCIIコードに置き換えます。


●フィールド(CX_TEXT_FIELD/入力フィールド文字複写(CX_TEXT_INPUTFIELD

複写範囲内に存在する複写対象フィールド内の文字データのみを複写します。


特殊文字の置き換えは以下の変換規則に従います。

文字

変換規則

NULL文字、制御コード

削除

フィールド内文字列の前後にある空白

削除

1バイト文字の変換エラー

ハイフン'-'

フィールドアトリビュート位置

CopyFormatに従います

改行位置
(80桁目の文字の後ろ,矩形モード時は、矩形範囲右端文字の後ろ)

CopyFormatに従います

APL文字

DspCodeConvTypeに従いコード変換されたASCIIコードに置き換えます。


<フィールド内文字の前後にある空白の削除例>

[□□□□□□AAAAA]-前に空白がある場合---→“AAAAA”
[AAAAA□□□□□□]-後ろに空白がある場合--→“AAAAA”
[□□AAA□□AA□□]-前後と間に空白がある場合→“AAA□□AA”
[□□□AA□□AA□□□\n
 □□□] -フィールド内文字列前後の空白に改行位置が挿入される場合
→"AA□□AA□□□" 
(“[ ]”はフィールド、□は空白,\nは改行位置を表します)

●属性情報(CX_ATTR1CX_ATTR4

複写範囲内の属性情報を複写します。
属性情報の複写は「GetScreen(画面情報の取得)」メソッドでのみ指定可能です。


属性情報はビットの組み合わせで表します。
そのため、「CopyFormat(取得フォーマット)」プロパティを使用したアトリビュート位置、改行位置に対する文字変換/挿入は行いません。
属性情報は複写範囲内の各行をそのままつなげた連続したデータとして複写します。
属性情報を表すビット値については「20.3 データ一覧」を参照してください。


「CopyMode」へ設定する値には次のものがあります。

情報種別

複写動作

定義名

文字

指定範囲内の全データ

CX_TEXT_ALL

0

フィールド内の文字のみ

CX_TEXT_FIELD

1

入力フィールド内の文字のみ

CX_TEXT_INPUTFIELD

2

属性:フィールド論理属性

指定範囲内の全データ複写

CX_ATTR1

3

属性:フィールド表示属性

CX_ATTR2

4

■取得フォーマットCopyFormatプロパティ

構文

object. CopyFormat

データ型

文字列

アクセス方法

参照/設定

設定値範囲

80バイト以内の文字列

初期値

“[] 0D0A]”(FA位置→空白、改行位置→CR+LFコード)

対象エミュレータ

「GetScreen、CopyScreen(画面情報の取得)」メソッドによってディスプレイ端末画面の文字を取得する際、フィールドアトリビュート位置と改行位置(画面右端、または複写矩形の右端)に対して文字や制御コードを設定することができます。
書式指定は文字の取得時のみ有効です。
「CopyMode(複写モード)」プロパティで属性情報の取得を指定した場合、書式指定は使用しません。


書式は80バイト以内の文字列で指定します。
値は設定、参照することが可能です。
指定する「FA置き換え文字」と「改行置き換え文字」の区切りは半角空白になります。
初期値は“[] [0D0A]”(FA位置→空白、改行位置→CR+LFコード)です。


記述形式([]内のパラメータは省略可能です。改行は空白文字区切りを意味します。)

[FA置換え文字
[改行置換え文字]]

FA置換え文字

複写範囲内に存在するフィールドアトリビュート位置を、指定する文字や制御コードに置き換えます。


制御コードを指定する場合には“[0D0A]”のようにカッコ[]で囲みます。
空白を指定する場合には“[ ]”のようにカッコ[]で囲みます。
制御コードと文字の混在“ABCD[0D0A]アイウ[09]”等も可能です。
カッコ記号のみ指定する場合には“[[”のようにカッコを重ねて書きます。
[]内に制御コード、空白以外が指定された場合、CopyScreen,GetScreenメソッドはエラーを返します。


指定は省略可能であり、何も囲まないカッコ“[]”を記述した場合も省略を意味します。
指定を省略した場合、フィールドアトリビュート位置は空白に置き換えられます。


●改行置換え文字

複写範囲の改行位置へ、指定する文字や制御コードを挿入します。


制御コードを指定する場合には“[0D0A]”のようにカッコ[]で囲みます。
空白を指定する場合には“[ ]”のようにカッコ[]で囲みます。
制御コードと文字の混在“ABCD[0D0A]アイウ[09]”等も可能です。
カッコ記号のみ指定する場合には“[[”のようにカッコを重ねて書きます。


指定は省略可能であり、何も囲まないカッコ“[]”を記述した場合も省略を意味します。
指定を省略した場合、改行位置には何も挿入されず、複写範囲内の各行は連続した文字列として格納されます。


<フィールドアトリビュート位置へ’@’、改行位置へCR/LFコードを指定した場合>

CopyFormat="@ [0D0A]"

■貼り付けフォーマットPasteFormatプロパティ

構文

object. PasteFormat

データ型

文字列

アクセス方法

参照/設定

設定値範囲

80バイト以内の文字列

初期値

“[0D0A RETURN]”(CR+LFコード→改行キー)

対象エミュレータ

「PutScreen、PasteScreen(画面情報の貼り付け)」メソッドによりディスプレイ端末画面へ文字を貼り付ける際、貼り付け元の文字列中にセパレータを設定し、セパレータに対して任意の文字やエミュレータキーを割り当てることができます。
書式は80バイト以内の文字列で指定します。
値は設定、参照することが可能です。
指定する「FA置き換え文字」と「改行置き換え文字」の区切りは半角空白になります。
初期値は“[0D0A] [RETURN]”(CR+LFコード→改行キー)です。


記述形式([ ]内のパラメータは省略可能です。改行は空白文字区切りを意味します。)

[区切り文字
  区切り置換え文字]

●区切り文字

貼り付け元の文字列中の文字や制御コードを区切り文字として設定します。
セパレータは貼り付け時に「区切り置換え文字」の指定に従って文字やエミュレータキー等に置き換えられます。


制御コードを指定する場合には“[0D0A]”のようにカッコ[]で囲みます。
空白を指定する場合には“[ ]”のようにカッコ[]で囲みます。
制御コードと文字の混在“ABCD[0D0A]アイウ[09]”等も可能です。
カッコ記号のみ指定する場合には“[[”のようにカッコを重ねて書きます。


「区切り置換え文字」と共に省略が可能です。
省略時には貼り付け文字列をそのまま複写します。


●区切り置換え文字

区切り文字を置き換える文字やエミュレータキー等を指定します。


エミュレータキー、ホスト漢字コードを指定する場合には、「SendKeys(キー入力)」メソッドで扱う文字ベースの記述(“[TAB]”、“[41A1]”のように‘[’と‘]’で囲まれた文字列)で記述します。
空白を指定する場合には“[ ]”のようにカッコ[]で囲みます。
文字との混在“ABCD[TAB]アイウ[41A1]”も可能です。
区切り文字を削除する場合にはカッコのみ“[]”を記述します。
なお、「SendKeys(キー入力)」メソッドと同様に貼り付け最中にキーボードロック状態が発生する場合(プログラム・アテンション・キーを指定、フィールド脱出によるアテンションの発生 等)、後に続く文字の貼り付けは保証されません。


●追加指定

‘|’で区切ることにより「区切り文字」と「区切り置換え文字」の条件を複数指定することが可能です。


「PastFormat」プロパティにカッコ記号のみ指定する場合には“[[”のように重ねて書きます。
「PastFormat」プロパティに‘|’記号のみ指定する場合には“||”のように重ねて書きます。


CR/LFコードを区切りに、区切り動作をタブキー動作に指定した例>

PasteFormat = "[0D0A] [TAB]"

<タブコードを区切りに、区切り動作を削除に指定した例>

PasteFormat = "[09] []"

<タブコード→削除、 追加指定でCR/LFコード→タブキー動作 に指定した例>

PasteFormat = "[09] []|[0D0A] [TAB]"

■画面情報ScreenDataプロパティ

構文

object. ScreenData

データ型

バイト型または文字列型

アクセス方法

参照(GetScreenメソッド呼び出し後に有効)

初期値

NULLまたは空文字

対象エミュレータ

「GetScreen(複写)」メソッドにより複写したディスプレイ端末の画面情報が格納されます。


格納されるデータサイズは、「GetScreen(複写)」メソッドの引数で指定する複写矩形と、「CopyMode(複写方法)」、「CopyFormat(複写フォーマット)」プロパティで指定するデータ種別、複写方法、複写フォーマットに依存します。
CopyModeが文字(CX_TEXT_XX)の場合、データ型は文字列型、フィールド属性(CX_ATTRX)の場合バイト型となります。


■複写GetScreenメソッド

構文

object. GetScreen ( [row1,column1 [,row2,column2]] )

引数

引数は次のものです。

項目

内容

row1

整数

複写元の開始行位置を指定します。

column1

整数

複写元の開始桁位置を指定します。

row2

整数

複写元の終了行位置を指定します。

column2

整数

複写元の終了桁位置を指定します。

二重発行動作

キャンセル

復帰値

0:正常/その他の値:異常

対象エミュレータ

関連プロパティ

WaitTime,WaitStatusTime,DspCodeConvType,DspemuRow,DspemuColumn, RectFlag,CopyMode,CopyFormat,ScreenData

ディスプレイ端末画面の文字または属性情報を「ScreenData(画面情報)」プロパティへ複写します。


メソッドの処理にはプロパティの「WaitTime(処理の応答待ち時間)」「WaitStatusTime(ホスト状態の監視時間)」指定値が使用され、「キー入力可能」状態を待ち合わせてディスプレイ端末の画面情報を「ScreenData(画面情報)」プロパティへ複写します。
タイムアウトが発生した場合には、その時点の画面情報を複写します。

複写の範囲は引数「row1、column1、row2、column2」で指定する範囲内で「RectFlag(矩形フラグ)」プロパティに従って行います。
「row1、column1」は合わせて省略が可能です。省略された場合には、1行1桁目を開始位置とします。
「row2、column2」は合わせて省略が可能です。省略された場合には、最終行、最終桁を終了位置とします。
引数「row1、column1、row2、column2」の指定有効範囲は1行、1桁から「DspemuRow、DspemuColumn(画面サイズ・行、桁)」プロパティが表すディスプレイ端末の最大行、桁までとなります。


引数の指定を省略した場合には、それぞれの最小、最大値を省略値として使用します(すべて省略した場合には全画面)。

文字と属性情報のどちらを複写するかは、「CopyMode(複写方法)」プロパティの指定により決定します。


■クリップボードへの複写CopyScreenメソッド

構文

object. CopyScreen ( [row1,column1 [,row2,column2]]

引数

引数は次のものです。

項目

内容

row1

整数

複写元の開始行位置を指定します。

column1

整数

複写元の開始桁位置を指定します。

row2

整数

複写元の終了行位置を指定します。

column2

整数

複写元の終了桁位置を指定します。

二重発行動作

キャンセル

復帰値

0:正常/その他の値:異常

対象エミュレータ

関連プロパティ

WaitTime,WaitStatusTime,DspCodeConvType,DspemuRow,DspemuColumn, RectFlag,CopyMode,CopyFormat,

ディスプレイ端末画面の文字をクリップボードへ複写します。
メソッドの動作は「GetScreen(複写)」メソッドと同様です。ただし、属性情報の複写はできません。
「CopyMode(複写方法)」で属性情報を指定した場合、メソッドは失敗します。


メソッドの処理にはプロパティの「WaitTime(処理の応答待ち時間)」「WaitStatusTime(ホスト状態の監視時間)」指定値が使用され、「キー入力可能」状態を待ち合わせてディスプレイ端末画面の文字をクリップボードへ複写します。
タイムアウトが発生した場合には、その時点の画面情報を複写します。


複写の範囲は引数「row1、column1、row2、column2」で指定する範囲内で「RectFlag(矩形フラグ)」プロパティに従って行います。
「row1、column1」は合わせて省略が可能です。省略された場合には、1行1桁目を開始位置とします。


「row2、column2」は合わせて省略が可能です。省略された場合には、最終行、最終桁を終了位置とします。
引数「row1、column1、row2、column2」の指定有効範囲は1行、1桁から「DspemuRow、DspemuColumn(画面サイズ・行、桁)」プロパティが表すディスプレイ端末の最大行、桁までとなります。
引数の指定を省略した場合には、それぞれの最小、最大値を省略値として使用します(すべて省略した場合には全画面)。


複写文字は、「CopyMode(複写方法)」、「CopyFormat(複写フォーマット)」プロパティにより指定される複写方法と複写フォーマットで複写します。


ホスト→パソコン間の1バイト文字は、「DspCodeConvType(1バイトコード変換種別)」プロパティで指定する変換種別でコード変換を行います。


■貼り付けPutScreenメソッド

構文

object. PutScreen( string [,row1,column1 [,row2,column2]] )

引数

引数は次のものです。

項目

内容

string

文字列

ディスプレイ端末へ貼り付ける文字列。

row1

整数

貼り付け先の開始行位置を指定します。

column1

整数

貼り付け先の開始桁位置を指定します。

row2

整数

貼り付け先の終了行位置を指定します。

column2

整数

貼り付け先の終了桁位置を指定します。

二重発行動作

キャンセル

復帰値

0:正常/その他の値:異常

対象エミュレータ

関連プロパティ

WaitTime,WaitStatusTime,DspCodeConvType,DspemuRow, DspemuColumn,RectFlag,PasteFormat

ディスプレイ端末へ文字列の貼り付けを行います。
文字列の貼り付けとは「PasteFormat(貼り付けフォーマット)」プロパティに従って行われるキー入力エミュレーション機能です。


メソッドの処理にはプロパティの「WaitTime(処理の応答待ち時間)」「WaitStatusTime(ホスト状態の監視時間)」プロパティ指定値が使用され、「キー入力可能」状態を待ち合わせて引数「string(貼り付け文字列)」の入力を開始します。タイムアウトが発生した場合には、貼り付けは行いません。


貼り付け処理中に処理中状態になった場合、SendKeysメソッドと同様に、処理中解除をWaitTimeプロパティの設定時間の間待ち合わせます。
貼り付けの範囲は引数「row1、column1、row2、column2」で指定する範囲内で「RectFlag(矩形フラグ)」プロパティに従って行います。
「row1、column1」は合わせて省略が可能です。省略された場合には、1行1桁目を開始位置とします。
「row2、column2」は合わせて省略が可能です。省略された場合には、最終行、最終桁を終了位置とします。
引数「row1、column1、row2、column2」の指定有効範囲は1行、1桁から「DspemuRow、DspemuColumn(画面サイズ・行、桁)」プロパティが表すディスプレイ端末の最大行、桁までとなります。
複写文字数が貼り付け範囲の文字数を超えている場合には範囲内で切り捨てられます。


引数「string」に指定可能な文字列はSendKeysの仕様に従い、PasteFormatの設定に従って置き換えられます。


■クリップボードからの貼り付けPasteScreenメソッド

構文

object. PasteScreen( [row1,column1 [,row2,column2 ]] )

引数

引数は次のものです。

項目

内容

row1

整数

貼り付け先の開始行位置を指定します。

column1

整数

貼り付け先の開始桁位置を指定します。

row2

整数

貼り付け先の終了行位置を指定します。

column2

整数

貼り付け先の終了桁位置を指定します。

二重発行動作

キャンセル

復帰値

0:正常/その他の値:異常

対象エミュレータ

ディスプレイ端末へクリップボードにある文字列の貼り付けを行います。
文字列の貼り付けとは「PasteFormat(貼り付けフォーマット)」プロパティに従って行われるキー入力エミュレーション機能です。


メソッドの処理にはプロパティの「WaitTime(処理の応答待ち時間)」「WaitStatusTime(ホスト状態の監視時間)」プロパティ指定値が使用され、「キー入力可能」状態を待ち合わせてクリップボード上の文字列の入力を開始します。タイムアウトが発生した場合には、貼り付けは行いません。


貼り付けの範囲は引数「row1、column1、row2、column2」で指定する範囲内で「RectFlag(矩形フラグ)」プロパティに従って行います。
「row1、column1」は合わせて省略が可能です。省略された場合には、1行1桁目を開始位置とします。
「row2、column2」は合わせて省略が可能です。省略された場合には、最終行、最終桁を終了位置とします。


引数「row1、column1、row2、column2」の指定有効範囲は1行、1桁から「DspemuRow、DspemuColumn(画面サイズ・行、桁)」プロパティが表すディスプレイ端末の最大行、桁までとなります。
引数の指定を省略した場合には、それぞれの最小、最大値を省略値として使用します(すべて省略した場合には全画面)。
複写文字数が貼り付け範囲の文字数を超えている場合には範囲内で切り捨てられます。


貼り付ける文字は、「PasteFormat(貼り付けフォーマット)」プロパティの指定に従ってフォーマット(分割、置き換え)した後、ディスプレイ端末へ入力されます。


パソコン→ホスト間の1バイト文字は、「DspCodeConvType(ディスプレイ1バイトコード変換種別)」プロパティで指定する変換種別でコード変換を行います。
なお、文字列の入力開始後はキーボードロック状態の監視を行いません。
そのため、入力中にキーボードロック状態が発生する場合(プログラム・アテンション・キーを文字列の途中に指定、フィールド脱出によるアテンションの発生 等)、その後に続く文字の入力が正常に行われない場合があります。