get_property¶
Category: 本体との連携
書式¶
(get_property、プロパティ名)
(get_property、プロパティ名、既定値)
引数¶
| 引数 | 説明 |
|---|---|
| プロパティ名 | 取得するプロパティの名前 |
| 既定値 | 取得できなかったときの結果(省略時は空文字列) |
戻り値¶
プロパティの値。取得できなかったときは既定値。
解説¶
ベースウェア(SSP など)に SSTP の EXECUTE で GetProperty コマンドを送り、プロパティの値を取得します。送り先は、NOTIFY hwnd などで得たゴーストのメインウィンドウです。プロパティ名の仕様はベースウェアのドキュメントを参照してください。ローカルのみの関数です(SecurityLevel: local でないリクエストでは実行されません)。
応答コードが 200 のときだけ値を返し、それ以外は既定値になります。応答コードは (SSTP応答コード) で確かめられます。既定値になるのは次の場合です。
- 存在しないプロパティ(SSP は
204を返します)。 - ウィンドウハンドルがまだ分からないとき(起動直後など)や、ベースウェアが応答しなかったとき(応答コード
0)。 - プロパティ名に改行が含まれているとき(応答コード
0。送りません)。
(S0)… は書き換えません。任意のコマンドを送るときや、複数行の結果を受け取るときは execute_sstp を使います。
Mc204-1 での変更:
- ウィンドウハンドルが分かる前に呼ぶと、以後 FMO からウィンドウハンドルを取り直さなくなり、
(ウィンドウハンドル0)が0のままになっていました。 - 応答の 2 行目を値としていたため、ヘッダの付いた応答では値を取り違えていました。ヘッダを読み飛ばして追加データを読みます。
- プロパティ名に改行を含めると、要求のヘッダを書き足せてしまいました。
- 応答を無期限に待っていました。ベースウェアが応答できない状態だと、そのまま止まってしまいます。5 秒で打ち切ります。
使用例¶
現在のゴーストは(get_property、currentghost.name、不明)です。