-----------------------------------------------------
<共通ルール>
-----------------------------------------------------

命令の記述方法

<MOVE> "p1"p2"

<MOVE> といった具合に命令の前後は<>で囲う
命令の英字は「半角大文字」限定

"p1" 〜 の所に命令ごとに必要なパラメータを記述する
各パラメータは " ダブルコーテーションで区切る

1行に1命令しか記述してはいけない
 (1行に複数命令書くとロジック上どれか1個が実行されてしまう)

1行は200桁まで

命令の記述位置の指定はないが前に1個タブを
入れておいた方が見やすい


変数

*p1 変数は頭に * アスタリスクをつける

数字タイプや文字タイプなどの区別は特にしていない
計算の時には数字だったら計算するし、そうでなかったら
計算出来ないだけの事

変数の数の初期値は100個まで
(最小10個〜最大300個まで変更する事ができる)

桁数の初期値は256桁まで
(最小64桁〜最大32000桁まで変更する事ができる)

--------------------------------------------------------------------
<命令説明>
--------------------------------------------------------------------

 ◆ロジック操作

KSPスクリプトを宣言
<KSP>

コメント行や何も入っていない行をのぞく、スクリプトの
先頭行にこの文字が入っていないとKSPと認識されない


コメント行



セミコロンを1桁目に入れておくとその行はコメント行とみなす


項目転記

<MOVE> "p1"p2"

p1 : 転記先変数
p2 : 転記元変数/数字/文字

右から左に転記される

例1.<MOVE> "*a"1" *a という変数に数字 1 を転記
例2.<MOVE> "*b"A" *b という変数に文字 A を転記
例3.<MOVE> "*c"*d" *c という変数に *d の変数を転記


項目足算

<+> "p1"p2"

p1 : 加算先変数
p2 : 加算元変数/数字

例1.<+> "*a"1" *a という変数に 1 を加算
例2.<+> "*b"*c" *b という変数に *c の変数を加算


項目引算

<-> "p1"p2"

p1 : 減算先変数
p2 : 減算元変数/数字

例1.<-> "*a"1" *a という変数から 1 を減算
例2.<-> "*b"*c" *b という変数から *c の変数を減算


項目掛算

<*> "p1"p2"

p1 : 掛ける先変数
p2 : 掛ける元変数/数字

例1.<*> "*a"5" *a 掛ける 5 を *a に格納
例2.<*> "*b"*c" *b 掛ける *c を *b に格納


項目割算

</> "p1"p2"

p1 : 割り先変数
p2 : 割る変数/数字

小数点以下は切り捨て

例1.</> "*a"5" *a 割る 5 を *a に格納
例2.</> "*b"*c" *b 割る *c を *b に格納


条件分岐

<IF> "p1"p2"p3"

p1 : 比較変数/数字/文字
p2 : 比較条件
p3 : 比較変数/数字/文字

条件が真の時、そのまま次の行に行く
   偽の時、次の1行をとばす

比較条件
= 同じ
! 違う
> 超え
< 未満
>= 以上
<= 以下


例1.<IF> "*a"="1" *a という変数が 1 だったら
次の命令に行く

以外 だったら1行とばす

例2.<IF> "*a"="*b" *a という変数が変数 *b と
同じだったら次の命令に行く

   以外 だったら1行とばす


指定ラベルに制御を移す

<GOTO> "p1"

p1 : ラベル文字/数字/変数

ラベルは左端に書く、左右スペースがあると認識されない
ラベルその物にはダブルコーテーションは付けない
ラベルの数は特に制限なし


ウェイト

<WAIT> "p1"

p1 : 数字/変数 1:(1/10ms)

ループなどで時間がかかる処理の時に適当にウェイト(待ち時間)
を入れ画面ロックを回避する

もしウェイトを入れずに永久ループなどを作ってしまったら
マウスはもう効かないのでそういう時は、CTRL+ALT+DEL で
プログラムを強制終了させる


利用可能変数桁数等の初期値変更

<INI> "p1"p2"p3"

p1 : 利用可能変数桁数 数字/変数 (MIN 64 〜 MAX 32000 まで)
初期値 256桁

p2 : 利用可能変数の数 数字/変数 (MIN 10 〜 MAX 300 まで)
初期値 100個

p3 : 利用可能入力ボックスの数 数字/変数(MIN 10 〜 MAX 30 まで)
初期値 10個

変数や入力ボックスを使う前に1つこの命令を入れておくと
初期値が変更される

テキストファイルを読込んだりする場合、変数既定値 256桁
では足りない場合が多い、そういう時に変数で扱える桁数を
拡張する、また変数100個もいらないといった時に数をへらして
やればその分使用メモリーが少なくて済む


項目区切り

<PICUP> "p1"p2"p3"p4"

p1 : 区切項目格納先変数
p2 : 区切る元変数/文字/数字
p3 : 何桁目から(先頭は 0 からはじまる)
p4 : 何桁分

例1.<PICUP> "*a"*b"0"1"

*b という変数の先頭から1桁分を *a という
変数に格納する


項目合体

<&> "p1"p2"

p1 : 合体先変数
p2 : 合体元変数/文字/数字

例1.<&> "*a"*b"

*a という変数に *b という変数を合体する


項目の長さを取得

<LEN> "p1"p2"

p1 : 取得先変数
p2 : 項目の長さを取得したい変数/文字/数字

例1.<LEN> "*a"*b"

*a という変数に *b という変数の長さを格納する



年月日取得

<DATE> "p1"

p1 : 取得先変数

例1.<DATE> "*a"

*a という変数に システム年月日を格納する


時分秒取得

<TIME> "p1"

p1 : 取得先変数

例1.<TIME> "*a"

*a という変数に システム時分秒を格納する


乱数発生

<RND> "p1"p2"

p1 : 乱数取得先変数
p2 : 乱数の範囲 数字/変数

例1.<RND> "*a"99"

*a という変数に 0〜99 の乱数を格納する


コマンドライン取得

<CMD> "p1"

p1 : コマンドライン取得先変数

プログラムアイコン上にファイルをドラッグ&ドロップ起動
するとファイルのフルパスが取れる

例1.<CMD> "*a"

*a という変数にコマンドラインを格納する


ダブルコーテーション取得

<DABU> "p1"

p1 : ダブルコーテーション取得先変数

ダブルコーテーションが必要な時に使う

例1.<DABU> "*a"

*a という変数にダブルコーテーションを格納する


バイナリコード取得

<BIN> "p1"p2"

バイナリコードが必要な時に使う

p1 : バイナリコード取得先変数
p2 : バイナリコード取得元変数/数字/文字

※バイナリコードは取得元変数の先頭1バイトが取得されます。
 複数桁のバイナリコードを扱う時は、<PICUP>命令で1バイトづつ
 ピックアップして行います。

例1.<BIN> "*a"A"

*a という変数に文字 A のバイナリコードを格納する

例2.<BIN> "*b"*c"

*b という変数に変数 *c のバイナリコードを格納する

例3.<BIN> "*c"鈴木"

*c という変数に文字 鈴木 の先頭1バイトの
バイナリコードを格納する

EUCコード変換

<EUC> "p1"p2"p3"

EUCコードが必要な時に使う

p1 : EUCコード変換先変数
p2 : EUCコード変換元変数/文字
p3 : 第1バイト目/第2バイト目
1 : 第1バイト目変換
2 : 第2バイト目変換

※EUCコードは変換元変数の先頭第1バイト目と第2バイト目といった具合に
 1バイトづつ分けて変換します。

※複数桁のEUCコードを扱う時は、<PICUP>命令で2バイトづつ
 ピックアップして行います。

※EUCコードへの変換は、漢字(全角文字)が対象です。
 全角半角の判断は、変換元変数(シフトJIS)第1バイト目0x80以上は
 全角、以外は半角、といったロジックでOKです。

KSPサンプルスクリプトJ(EUCコードに変換).txt 参照


例1.<EUC> "*a"鈴"1"

*a という変数に文字 鈴 の第1バイト目のEUCコードを格納する

例2.<EUC> "*a"鈴"2"

*a という変数に文字 鈴 の第2バイト目のEUCコードを格納する

例3.<EUC> "*b"*c"1"

*b という変数に変数 *c の第1バイト目のEUCコードを格納する



-----------------------------------------------------------

 ◆ファイル操作

ファイルコピー

<COPY> "p1"p2"

p1 : コピー元フルパス/変数
p2 : コピー先フルパス/変数

例1.<COPY> "C:\Reidai\a.txt"C:\Windows\デスクトップ\a.txt"

C:\Reidai フォルダの a.txt を デスクトップ にコピー

※ファイルを扱う命令はすべてフルパスで記述する


ファイル削除

<DEL> "p1"

p1 : 削除元フルパス/変数

例1.<DEL> "C:\Reidai\a.txt"

C:\Reidai フォルダの a.txt を 削除


フォルダ内指定ファイルコピー

<XCOPY> "p1"p2"p3"

p1 : コピー元フォルダフルパス/変数
p2 : コピー先フォルダフルパス/変数
p3 : コピー対象ファイル拡張子/変数

   フォルダ内のフォルダはコピーされずに無視される
またその中のファイルも無視される
対象は1階層分のファイルだけ

p3 拡張子の所に ? を入れると全ファイルが対象になる
  ※使用には十分な注意が必要


例1.<XCOPY> "C:\Reidai\a"C:\Windows\デスクトップ\a"?"

C:\Reidai\aフォルダ内のファイルをすべて
デスクトップ の aフォルダ内にコピー

   例2.<XCOPY> "C:\Reidai\a"C:\Windows\デスクトップ\a".txt"

C:\Reidai\aフォルダ内の拡張子が .txt のファイルを
すべてデスクトップ の aフォルダ内にコピー


フォルダ内指定ファイル削除

<XDEL> "p1"p2"

p1 : 削除元フォルダフルパス/変数
p2 : 削除対象ファイル拡張子/変数

フォルダ内のフォルダは削除されずに無視される
またその中のファイルも無視される
対象は1階層分のファイルだけ

p2 拡張子の所に ? を入れると全ファイルが対象になる
  ※使用には十分な注意が必要


例1.<XDEL> "C:\Reidai\a"?"

C:\Reidai\aフォルダ内のファイルをすべて削除

例2.<XDEL> "C:\Reidai\a".txt"

C:\Reidai\aフォルダ内の拡張子が .txt のファイルを
すべて削除


カレントディレクトリ変更

<CD> "p1"

p1 : 変更フォルダパス/変数

例1.<CD> "C:\Reidai"

C:\Reidai フォルダにカレントディレクトリを変更


フォルダ作成

<MD> "p1"

p1 : 作成フォルダフルパス/変数

例1.<MD> "C:\Reidai\a"

C:\Reidai フォルダにフォルダ a を作成


カレントディレクトリ取得

<DIR> "p1"

p1 : 取得先変数

例1.<DIR> "*a"

*a という変数に 現在のカレントディレクトリを取得する


ウィンドウズドライブ取得

<WDIR> "p1"

p1 : 取得先変数

例1.<WDIR> "*a"

*a という変数に ウィンドウズディレクトリが存在する
ドライブ名を取得する


ファイル読込み

<LOAD> "p1"p2"p3"p4"

p1 : 読込みファイルフルパス/変数
p2 : 読込み先変数
p3 : 何桁目から 数字/変数(省略可)
p4 : 何桁分 数字/変数(省略可)

例1.<LOAD> "C:\Reidai\a.txt"*a"

C:\Reidai\a.txt というファイルの内容を
変数 *a に取込む

※256桁を超えるファイルを読み込む場合、変数桁数既定値を
 <INI>命令で拡張する必要がある(MAX 32000桁)

例2.<LOAD> "C:\Reidai\a.txt"*a"0"32000"

C:\Reidai\a.txt というファイルの先頭から
32000桁分の内容を変数 *a に取込む

※先頭は0から始まる

※32000桁を超えるファイルを扱う場合、桁数を区切って
 処理する


ファイル書出し

<SAVE> "p1"p2"p3"p4"

p1 : 書出しファイルフルパス/変数
p2 : 書出し元変数
p3 : 何桁目から 数字/変数(省略可)
p4 : 何桁分 数字/変数(省略可)

例1.<SAVE> "C:\Reidai\a.txt"*a"

変数 *a の内容を C:\Reidai フォルダに a.txt という
ファイル名で書出す

例2.<SAVE> "C:\Reidai\a.txt"*a"0"32000"

変数 *a の32000桁分を C:\Reidai\a.txt というファイルの
先頭に書き出す

※先頭は0から始まる

※32000桁を超えるファイルを扱う場合、桁数を区切って
 処理する


1レコード取得

<READ> "p1"p2"p3"

p1 : 1レコード格納先変数
p2 : 元変数
p3 : 何行目か

行は 0 行目からはじまる

例1.<READ> "*a"*b"0"

*b という変数の 先頭行目1レコードを *a という
変数に格納する
ここで言う1レコードとは改行コードで改行された
1行分という意味
格納される変数には改行コードは含まれない


レコード数取得

<RCNT> "p1"p2"

p1 : レコード数格納先変数
p2 : レコード数を調べたい元変数/文字/数字

例1.<RCNT> "*a"*b"

*b という変数のレコード数を *a という
変数に格納する
ここで言うレコードとは改行コードで改行された
行という意味


改行コード付加

<\N> "p1"

p1 : 改行コードを付加する変数

例1.<\N> "*a"

*a という変数に改行コードを付加する
これにより複数行に改行したテキストファイルを作る
事ができる


エラー時スキップする

<SKIP>

コピーや削除しようとしたファイルが存在しないなど
の時その命令を読み飛ばして処理を続行する


エラー時スキップしない

<NOSKIP>

コピーや削除しようとしたファイルが存在しないなど
の時処理をストップさせる

なにも指定しなければこちらが既定値


ファイルサイズ取得

<FSZ> "p1"p2"

p1 : サイズ取得先変数
p2 : サイズ取得ファイルフルパス/変数

例1.<FSZ> "*a"C:\Reidai\a.txt"

C:\Reidai\a.txt というファイルのサイズ(バイト数)を
変数 *a に取得する

※ファイルが存在しない時は -1 が入る


ファイル一覧取得

<XDIR> "p1"

p1 : ファイル一覧取得先変数

カレントディレクトリのファイル一覧を取得する
一覧はファイルごとに改行コードで改行された状態で取得される

例1. <CD> "C:\Reidai"
<XDIR> "*a"

C:\Reidai というフォルダ内のファイル一覧を
変数 *a に取得する


ファイルパッチ修正

<PAT> "p1"p2"p3"p4"p5"

p1 : 基ファイルフルパス/変数
p2 : 基ファイル何桁目から 数字/変数
p3 : 基ファイル何桁分を 数字/変数
p4 : 修正するファイルフルパス/変数
p5 : 修正するファイル何桁目に書き込む 数字/変数

※桁の先頭は0から始まる

例1. <PAT> "C:\Reidai\アイコン.ico"22"744"C:\Reidai\KSPサンプルスクリプト1.exe"113328"

KSPアイコン変更

C:\Reidai\アイコン.ico というファイルの22桁目から744桁分を
C:\Reidai\KSPサンプルスクリプト1.exe というファイルの113328桁目
に書き込む


※この命令は、バイナリファイルもOKです。

 ちなみにKSP内でバイナリデータを扱うには、
 <BIN>バイナリコード取得命令などを使って、1バイトづつ操作します。


----------------------------------------------------------------------

 ◆他プログラム起動

プログラム起動

<EXEC> "p1"

p1 : プログラムフルパス/変数

例1.<EXEC> "C:\WINDOWS\NOTEPAD.EXE" メモ帳を起動


拡張子で関連付け起動

<XEXEC> "p1"

p1 : 起動ファイルフルパス/変数

例1.<XEXEC> "C:\Reidai\a.txt"

C:\Reidai フォルダの a.txt を 起動

例2.<XEXEC> "http://www.bl.mmtr.or.jp/~suzuki/"

インターネットホームページ
http://www.bl.mmtr.or.jp/~suzuki/ を 起動


DOSコマンド起動

<DOS> "p1"p2"p3"

p1 : DOSコマンド/変数
p2 : コマンド終了時DOSプロンプトを自動で閉じる/閉じない
1 : 自動で閉じる
2 : 閉じない
p3 : コマンドインタプリタを指定する(省略時 command.com を使う)

例1.<DOS> "DIR C:\Reidai\フォルダ"2"command.com"

C:\Reidai\フォルダ のディレクトリ一覧を表示

例2.<DOS> "RMDIR C:\Reidai\フォルダ"1"command.com"

C:\Reidai\フォルダ を 削除

例3.<DOS> "FORMAT A:/F:1.44"1"command.com"

フロッピーAドライブを通常のフォーマット

 ※PC98シリーズなどフロッピーがAドライブ以外の場合は、
  A:の所を正しいフロッピードライブにしてください。
  (注.まちがってもハードディスクをフォーマットしてしまわない様に)

例4.<DOS> "FORMAT A:/F:1.44/Q"1"command.com"

フロッピーAドライブをクイックフォーマット


 ※その他、DOSのコマンドは何でも実行できると思うので、
  必要に応じて色々試してみてください。

 ※2000,XP 系などでのコマンドインタプリタのファイル名が
          command.com ではない様な気がするので、一応指定できる様に
          しました。(ひょっとするとDOS自体無いのかもしれませんが、
                        環境がないのでわかりません円)


----------------------------------------------------------------------

 ◆ウィンドウ操作

ウィンドウ表示

<WIN> "p1"p2"p3"p4"

p1 : ウィンドウXサイズ数字/変数
p2 : ウィンドウYサイズ数字/変数
p3 : ウィンドウ表示X位置数字/変数
p4 : ウィンドウ表示Y位置数字/変数

例1.<WIN> "640"480"0"0"

大きさ640x480で左上にウィンドウを表示


ウィンドウタイトル

<TIT> "p1"

p1 : タイトル文字/変数


ウィンドウクリア

<CLS> "p1"

p1 : 初期化モード数字/変数

ウィンドウのバックの色
0 : 白
1 : 中間
2 : 灰色
3 : 中間
4 : 黒


ボタン作成

<BUT> "p1"p2"p3"p4"

p1 : ボタンを押した時に制御を移すラベル文字/変数
(飛び先)
p2 : ボタンサイズX(横) 数字/変数(省略時標準サイズ)
p3 : ボタンサイズY(縦) 数字/変数(省略時標準サイズ)
p4 : ボタン文字/変数
  (省略時作成した順番でbutton1 button2 〜 buttonA という名前で作られる)

ボタンの数は10個まで

例1.<BUT> "a"70"40"ボタン1"

カレント位置に X70 Y40 のサイズでボタン1という名前で
ボタンを作成、ボタンが押されたらラベル a(飛び先)に制御を移す


ウィンドウストップ

<STOP>

ボタンが押されるのを待ったり、ディスプレイ表示を止めて見たり
する時に書く


ディスプレイ表示

<DISP> "p1"p2"p3"

p1 : 表示する文字/数字/変数
p2 : 表示X位置数字/変数
p3 : 表示Y位置数字/変数

p2 p3 を省略するとオブジェクトカレント位置より
自動的に下に移動表示される

例1.<DISP> "a"10"20"

XY座標10,20の位置に文字 a を表示


オブジェクトカレント位置

<POS> "p1"p2"

p1 : オブジェクトカレントX位置数字/変数
p2 : オブジェクトカレントY位置数字/変数

例1.<POS> "10"20"

XY座標10,20の位置にオブジェクトカレント位置を変更


オブジェクト色

<IRO> "p1"p2"p3"

p1 : R(0〜255)数字/変数
p2 : G(0〜255)数字/変数
p3 : B(0〜255)数字/変数

例1.<IRO> "255"255"255"

RGBでオブジェクトの色を指定


フォント

<FONT> "p1"p2"p3"

p1 : 0:MS明朝 1:MSゴシック 数字/変数
p2 : 文字サイズ数字/変数
p3 : 0:通常 1:太字 2:イタリック 3:太字イタリック
     文字種数字/変数

例1.<FONT> "1"14"1"

MSゴシック,サイズ14,太字

初期値は <FONT> "1"16"0"


直線

<SEN> "p1"p2"p3"p4"

p1 : 直線開始位置X数字/変数
p2 : 直線開始位置Y数字/変数
p3 : 直線終了位置X数字/変数
p4 : 直線終了位置Y数字/変数

例1.<SEN> "10"200"600"200"

XY座標開始位置10,200から終了位置600,200 の間に
指定した色で直線を引く


四角塗りつぶし

<NURI> "p1"p2"p3"p4"

p1 : 塗りつぶし開始位置X数字/変数
p2 : 塗りつぶし開始位置Y数字/変数
p3 : 塗りつぶし終了位置X数字/変数
p4 : 塗りつぶし終了位置Y数字/変数

例1.<NURI> "10"20"100"50"

XY座標開始位置10,20から終了位置100,50 の範囲を
指定した色で塗りつぶす


入力ボックス

<INPUT> "p1"p2"p3"

p1 : 入力先/変数
p2 : 入力枠Xサイズ数字/変数
p3 : 入力枠Yサイズ数字/変数

入力ボックスの数は初期値10個まで(30個まで拡張できる)

例1.<INPUT> "*a"300"30"

カレント位置にXY座標300,30の入力ボックスを作る
入力されたデータは変数 *a に格納される


入力ボックス初期化

<INCLS> "p1"p2"

p1 : 入力ボックスID(0〜)数字/変数
p2 : 入力ボックス初期値/変数

入力ボックスIDは入力ボックスを作った順番に
0 から連番が振られている

例1.<INCLS> "0""

1個目の入力ボックスをクリアしカーソルを位置付ける


画像ファイル表示

<GDISP> "p1"p2"p3"

p1 : 画像ファイルフルパス/変数
p2 : 表示X座標数字/変数
p3 : 表示Y座標数字/変数

画像ファイルは bmp mag jpg が表示可能

例1.<GDISP> "C:\Reidai\a.bmp"50"150"

XY座標50,150の位置に C:\Reidai\a.bmp という画像を
表示する


-------------------------------------------------------------

 ◆音操作

音を再生する

<OTO> "p1"

p1 : サウンドファイルフルパス/変数

例1.<OTO> "C:\WINDOWS\MEDIA\DING.WAV"

DING.WAV というサウンドファイルを再生

サウンドファイルは WAV AVI MID が再生可能


音を停止する

<OTOSTOP>

例1.<OTOSTOP>

再生中の音を停止する


CDを再生する

<CDPLAY>"p1"

p1 : CDのトラック/変数

例1.<CDPLAY>"1"

CDの1曲目以降を再生


曲の停止は、<OTOSTOP>共通です
 

--------------------------------------------------------------------

○ちょっとした技


・少数の表示

KSPでは少数を扱うことができません。よって

10÷3=3 となってしまいます。

これに対処するためにはまず

<*>を使って割られる値を必要な少数点以下の桁数に合わせて10倍や100倍します。
それで出た値を割り算し、その解をを使って2つに分けて
任意の位置に<&>で小数点を付加します。

・<CMD>について

<CMD>でフルパスを取得すると以下のようになります

"c:\programfiles\kspexe1\a.exe"

これがそのまま任意の変数に代入されるわけですが
このままだと""まで変数に入ってしまい不便です。

そこで<LEN>を使って


<CMD>    "*b"               ← *bにフルパス取得
<LEN>     "*a"*b"          ← *bの長さを*aに取得
<->         "*a"2"        ← *aから2引く
<PICUP> "*b"*b"1"*a"   ← *bの1〜*a桁目までを*bに再度代入


このようにすることでダブルクオテーションのないフルパスが取れます
[PR] | 貴金属 買取ハウスクリーニング韓国食材インプラント転職サイトSEOアクセス解析ハウスメーカーレンタルオフィスSEO対策消費者金融不動産担保ローン時計車 買取ハワイ挙式アスクル転職生命保険テンプレート沖縄旅行動画免許合宿二輪引越し消費者金融税理士ゴルフ会員権留学レーシックマッサージFX投資信託くりっく365アフィリエイト育毛剤FXホームページ制作デイトレードFXタイバンコクハワイ レンタカーベスト ハワイ ホテル レーツバリ島年末年始ハワイHawaii hotelsHawaii Activitiesbhhrホノルルマラソン
【運営会社「パラダイムシフト」サービス】 ハワイ現地オプショナルツアーリラックマ) - ビジネスクラス航空券 - 格安航空券(1) - 格安航空券(2) - 海外ホテル - 韓国旅行
無料ホームページ作成 - レンタルサーバー - 携帯ホームページ - ブログ - ホテル 予約 - タイムシェア - ヴィラ - ハワイ コンドミニアム - バリ島 ホテル - ハワイ 不動産 - プーケット ホテル