Written in Japanese(UTF-8)
2026.2.2
INASOFT


/トップ/マウスのお供 ダウンロード/WebHelp/ヘルプトップ

メモ表示を自由にカスタマイズするためのFR-Script解説

[ver.1.67.01βより]
メモ入力画面(FR-Script入力画面モード)

メモ欄に表示する文字列をスクリプト指定で制御するための機能です。

設定ダイアログのメモ タブで、「メモ欄への入力をスクリプト(FR-Script)として扱い、スクリプトで表示する文字列を作成する」にチェックを入れると、メモ欄に入力した文字列がスクリプト(FR-Script)として扱われ、表示更新のタイミングでスクリプトが実行されるようになります。

設定ダイアログをOKボタン or 適用ボタンを押したタイミングから、スクリプトの実行が始まります。(すでにスクリプトの実行中の場合は、強制停止してから実行となります)

基本的には、CB.SetOutputText() に入れた数値 or 文字列が記憶され、次回タイミングで表示されるようになります。表示更新毎にスクリプトの実行開始を試行しますが、ループ制御をしているなど、前回のスクリプト実行が終了していない場合は、そのまま処理が継続されます。そのため、スクリプトの中でループ制御とSleepを駆使し、変数の内容を維持しつつ文字列を決めることもできます。

スクリプトのパースエラー、0除算が実行された場合など、エラーが発生した場合は、エラー文字列がメモ欄に表示されるようになります。

なお、スクリプトが無限ループするなどして完了しない場合、スクリプトの書き換えを行ってOKボタン / 適用ボタンをを押したタイミングで中断指示が送信されます。マウスのお供自体が終了した場合は、スクリプトを実行しているスレッドを強制終了します。

文法ルールは、「いじくるつくーる」に搭載されていたR-Scriptと似たようなものとなっており、軽量版です(FR-ScriptのFはFeatherの略です)。詳細な文法解説は後述します。

スクリプトのサンプル

以下に、FR-Scriptのサンプルを示しますので、これを参考に独自の動きを構築してみてください。

(1) ランダムな数値を次々表示する。

srand(GetCurrentSecond());
loop {
    CB.SetOutputText(rand())
    Sleep(500)
}

(2) 固定の文字列を表示する。

CB.SetOutputText("スクリプトで作ったメモ")

(3) 現在時刻の秒の2倍を表示する。

a = GetCurrentSecond()
b = a * 2
CB.SetOutputText(b)

(4) 今年の干支を表示する。

year = GetCurrentYear()
n = year % 12
if (n == 0) {
    eto$ = "申"
}
else if (n == 1) {
    eto$ = "酉"
}
else if (n == 2) {
    eto$ = "戌"
}
else if (n == 3) {
    eto$ = "亥"
}
else if (n == 4) {
    eto$ = "子"
}
else if (n == 5) {
    eto$ = "丑"
}
else if (n == 6) {
    eto$ = "寅"
}
else if (n == 7) {
    eto$ = "卯"
}
else if (n == 8) {
    eto$ = "辰"
}
else if (n == 9) {
    eto$ = "巳"
}
else if (n == 10) {
    eto$ = "午"
}
else {
    eto$ = "未"
}
CB.SetOutputText("今年" + year + "年は、" + eto$ + "年です。")


FR-Script スクリプト仕様

FR-Scriptは、数値と文字列を直感的に扱える軽量なスクリプト言語です。コールバック(CB)を利用して、スクリプト実装元のプログラム機能を呼び出す他、時刻取得・乱数の取得・Windows APIを利用したダイアログ表示や環境変数操作にも対応しています。

1. 基本仕様

・変数とデータ型

変数名および後述の関数名は、アンダーバー(_)またはアルファベットで始まり、数字・アンダーバー(_)・アルファベットが続くというルールで付けます。英大文字・小文字を区別しません。

・即値

 基本的に数値は10進数で指定します。32bitで表現可能な範囲(-2147483648 〜 2147483647)を扱えます。0xで始まると16進数、0bで始まると2進数が指定できます。

・文字列リテラル

 ダブルコーテーション "..." またはシングルコーテーション '...' で囲みます。

 スクリプトの処理系は、外部とのやり取りにはUTF-16LEを用いますが、内部的には文字をUTF-8で扱います。

・コメント

 #, //, ; で始まる行は、行末までコメント(何も行わない)となります。



2. 演算子

演算子動作
+数値同士は加算、文字列が含まれる場合は連結します。
-数値同士を減算します。
*数値同士を乗算します。
/数値同士を除算します。0で割るとエラーになり、処理を停止します。
%数値同士を除算した余りを求めます。0で割るとエラーになり、処理を停止します。
=変数代入を行います。
+= , -=加算・減算しつつ変数代入を行います。
1増加・1減少させたい場合の書き方として、a++, a--,++a,--aという書き方もできます。
ただし、a++, a--の場合は、加算・減算前の値が評価結果となります。
<< , >>左シフト、右シフト。
| , &ビットOR, ビットAND。
*= , /= , %= ,
<<= , >>= ,
|=, &=, ^=
各演算を行いつつ変数代入します。
! , ~論理否定, ビット否定。
|| , &&if文の中で条件式をOR, ANDする場合に使用。
== , !=比較。型が異なる場合は文字列に変換して比較します。
=== , !==厳密な比較。型が異なる場合は不一致とみなします。
< , > , <= , >=数値は大小比較、文字列は辞書順で比較します。型が異なる場合は偽となります。
(...) 優先順位を高めて式を評価します。
関数名() 組み込み関数(後述)を呼び出します。
CB.関数名() 呼び出し元アプリケーションへのコールバック関数呼び出しです。
呼び出し元アプリケーションごとの独自の機能を提供できます。
(例:マウスふるふる…マウス移動機能の提供, マウスのお供…表示する文字列を決める機能の提供)


3. 制御構造 (IF-ELSE, WHILE, EXIT)

条件分岐は IF - ELSE IF - ELSE を使用します。

if (score >= 80) {
    msg$ = "合格!"
}
else {
    msg$ = "がんばりましょう"
}

繰り返しは WHILE を使用します。WHILE(1) の特別な書き方として LOOPという書き方も可能です。

i = 0
while(i < 10) {
    TextOut("" + i)
    ++i
}
i=0
loop {
    TextOut("" + i)
    ++i
}

WHILE から抜ける場合は BREAK を使います。条件評価にすぐに戻る場合は CONTINUE を使います。

スクリプトを直ちに終了させる場合は、EXIT を使います。



4. 組み込み関数リファレンス

制御・日時・乱数

関数名説明
Sleep(n)nミリ秒だけスクリプトの処理を停止します。0を指定すると、他のスレッドに一瞬だけ処理を譲ってすぐに戻ります。
GetCurrentYear()
GetCurrentMonth()
GetCurrentDay()
GetCurrentDayOfWeek()
GetCurrentHour()
GetCurrentMinute()
GetCurrentSecond()
GetCurrentMilliSeconds()
現在のローカル日時の、年・月・日・曜日・時(24h表記)・分・秒・ミリ秒を返します。
曜日は、0=日曜日, 1=月曜日, … , 6=土曜日を意味します。
ミリ秒とは、1000ミリ秒=1秒です。
srand(n)数値nで疑似乱数を初期化します。
rand()疑似乱数を返します。
GetFR_ScriptVersion()FR-Scriptのバージョン番号を数値で返します。(ver.X.YY.ZZ ⇒ XYYZZ)
GetSystemMetrics(n)GetSystemMetrics APIを、与えられた引数で呼び出し、その結果を返します。
(例:67…セーフモード起動時は1、16…プライマリモニタの横幅(ピクセル単位)、17…プライマリモニタの高さ(ピクセル単位)
  19…マウスが接続されていたら1、75…ホイール付きマウスだったら1)

文字列・変換関数

関数名説明
strlen(s$)バイト数を返します。
strupr$(s$)アルファベットを大文字に変換した文字列を返します。
strlwr$(s$)アルファベットを小文字に変換した文字列を返します。
strstr(s$, t$)文字列s$の中から文字t$を探し、見つかった位置(バイト)を返します。見つからなかった場合は-1を返します。
strstri(s$, t$)strstr()の英大文字・小文字を区別しない版です。
left$(s$, n)先頭から n バイト抜き出します。
right$(s$, n)末尾から n バイト抜き出します。
mid$(s$, n, m),substr$(s$, n, m)
substring$(s$, n, m)
n バイト目から m バイト抜き出します。
toStr$(n)数値を10進数文字列に変換します。
toStr16$(n), toStr2$(n)数値を16進数文字列, 2進数文字列に変換します。
toInt(s$)文字列を数値に変換します。
GetAsciiCode(s$, n)文字列s$のnバイト目の文字コードを返します。nが範囲外の場合は-1を返します。
AsciiCode$(n)文字コードnの1バイトからなる文字列を返します。
Replace(s$, r1$, r2$)文字列s$の中からr1$を探し、r2$に置換した文字列を返します。

システム・UI関数

関数名説明
getenv$(name$)環境変数の値を取得します。
setenv(name$, value$)環境変数name$に値value$を設定します。
TextOut(msg$, title$)メッセージボックスを表示します。
Question(msg$, title$)はい(戻り値=1) / いいえ(戻り値=0) の選択ダイアログを表示します。
Question_OkCancel(msg$, title$)OK(戻り値=1) / キャンセル(戻り値=0) の選択ダイアログを表示します。
Question_YesNoCancel(msg$, title$)はい(戻り値=1) / いいえ(戻り値=0) / キャンセル(戻り値=-1) の選択ダイアログを表示します。
Error(msg$, title$)
Warning(msg$, title$)
Information(msg$, title$)
エラー(×),警告(!),情報(i)アイコン付きのメッセージボックスを表示します。


5. サンプルコード

// ユーザーへの挨拶と環境変数の表示
user$ = getenv$("USERNAME")
IF (Question(user$ + "さん、環境を表示しますか?", "確認")) {
    path$ = getenv$("PATH")
    Information("PATHの内容: " + left$(path$, 50) + "...", "システム情報")
}


6. その他


デバッグのヒント:
 構文エラーがある場合や、ゼロ除算・関数名が見つからないなどの場合は、エラーが発生した行番号が表示されます。

FR-Scriptについて:
 このスクリプトは、いじくるつくーる(Rnsf ver.7)に搭載されていたR-Scriptの軽量版となります。for, goto, 配列, 条件演算子などの一部機能や、大部分の関数(ファイル・レジストリ操作系・ダイアログ構築系・DLL呼び出し・正規表現等)は省かれています。ただし、コールバックによるスクリプト呼び出し元アプリケーションによる機能提供が可能です。

FR-Scriptの構築、このマニュアルの作成について:
 R-Scriptのインタプリタの作成、および、このマニュアルの作成は、生成AIによるプログラミング手法の確立を目的に、テキストで書かれた文法書を、生成AIのGeminiに渡して作成したコード(lex, yacc, C++)をベースに、作者の手により手直し、あるいは、生成AIとの相談による修正を経て、作成されました。極めて素早い期間での構築となりました。

 設定 - メモ タブ
 目次へ
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は、右上の作成日付の時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。

■このページに関するご意見をお待ちしております → フィードバックページ

/トップ/マウスのお供 ダウンロード/WebHelp/ヘルプトップ