2026.2.1
INASOFT
/トップ/マウスふるふる ダウンロード/WebHelp/ヘルプトップ
マウスの動きを自由にカスタマイズするためのFR-Script解説
[1.26.00βから]
マウスの動きをスクリプト指定で制御するための機能です。
設定ダイアログのマウスの揺らし方の選択肢で「スクリプト指定でカスタマイズする」を選ぶと、選択肢の右下の「マウス動作カスタマイズ(FR-Script)」ボタンが押下可能になります。ボタンを押下すると、スクリプトを入力できるダイアログボックスが開くので、スクリプトを入力してOKボタンを押して下さい。
設定ダイアログを開く前から「スクリプト指定でカスタマイズする」の状態になっていれば、このタイミングで、マウスを揺らす時間間隔で指定した秒数が経過後にスクリプトの実行が始まります。
そうでない場合は、設定ダイアログをOKボタンで閉じたタイミングから、マウスを揺らす時間間隔で指定した秒数が経過後にスクリプトの実行が始まります。
基本的には、マウスを揺らす時間間隔で指定した秒数が経過するごとにスクリプトが先頭から呼び出されますが、前回のスクリプト実行が終了していない場合は、そのまま処理が継続されます。そのため、スクリプトの中でループ制御とSleepを駆使して独自の間隔でマウス制御を行うことも可能です。
なお、スクリプトが無限ループするなどして完了しない場合、スクリプトの書き換えを行ってOKボタンを押した場合や、マウスの揺らし方を変えたタイミングで、スクリプトの中断指示が送信されます。マウスふるふる自体が終了した場合は、スクリプトを実行しているスレッドを強制終了します。
文法ルールは、「いじくるつくーる」に搭載されていたR-Scriptと似たようなものとなっており、軽量版です(FR-ScriptのFはFeatherの略です)。詳細な文法解説は後述します。
スクリプトのサンプル
以下に、FR-Scriptのサンプルを示しますので、これを参考に独自の動きを構築してみてください。
(1) 指定秒数ごとに、現在のマウスの位置から、左上に100ピクセルずつズレ続ける
x = CB.GetCursorPosX() y = CB.GetCursorPosY() CB.SetCursorPos(x-100, y-100)
(2) 指定秒数ごとに、左右にマウスを動かすが、動かす距離(ミッキー単位)はランダム
srand(GetCurrentSecond()); r = rand() CB.MoveMouse(r, 0) CB.MoveMouse(-r, 0)
(3) 指定秒数は無視して、0.1秒(100ミリ秒)ごとに、マウスを右上(10ミッキー)に動かし、すぐに左下(10ミッキー)に動かす
while(1) {
CB.MoveMouse(10, -10)
CB.MoveMouse(-10, 10)
Sleep(100)
}
(4) 指定秒数ごとに、マウスホイールを-128だけは動かす
CB.MouseWheel(-128)
(5) 指定秒数ごとに、マウスの左ボタン・右ボタン・中央ボタン(ホイールの押し込み)を同時に押し(1)・離し(0)する
CB.MouseButtonLeft(1) CB.MouseButtonRight(1) CB.MouseButtonMiddle(1) CB.MouseButtonLeft(0) CB.MouseButtonRight(0) CB.MouseButtonMiddle(0)
(6) 指定秒数ごとに、マウスのX1ボタン・X2ボタン(ブラウザの進む・戻るが割り当てられることの多いボタン)を同時に押し(1)・離し(0)する
CB.MouseButtonX1(1) CB.MouseButtonX1(0) CB.MouseButtonX2(1) CB.MouseButtonX2(0)
(7) 指定秒数ごとに、Scrool LockキーのトグルON・トグルOFFを繰り返す (標準機能では、トグルON⇔OFFが瞬間的に行われて元に戻るが、このスクリプトでは、ONで待ち、OFFで待ち、ONで待ち、OFFで待ち、…といった動きになる)
CB.KeyboardEvent(0x91, 1) CB.KeyboardEvent(0x91, 0)
なお、CB.KeyboardEventの第1引数はキーコード、第2引数は押し(1)・離し(0)を意味しています。
(8) 指定秒数は無視して、0.1秒(100ミリ秒)ごとに、マウスを右上(16ミッキー)に動かし、2秒待ち、左下(16ミッキー)に動かし、2秒待ち、…を繰り返す
loop {
CB.MoveMouse(-0x10, 0x10)
Sleep(2000)
CB.MoveMouse(0x10, -0x10)
Sleep(2000)
}
(9) 指定秒数ごとに、ダイアログを表示する
TextOut("サンプルダイアログ", "タイトル")
ダイアログを閉じるまでは、スクリプト実行中の扱いとなり、指定秒数後の次のターンでのダイアログの表示は行われませんが、スクリプトの実行は別スレッドにて並行で実行されているため、ダイアログを閉じてから指定秒数へのカウントが行われるのではなく、ダイアログが開いている間も指定秒数へのカウントは行われます。
FR-Script スクリプト仕様
FR-Scriptは、数値と文字列を直感的に扱える軽量なスクリプト言語です。コールバック(CB)を利用して、スクリプト実装元のプログラム機能を呼び出す他、時刻取得・乱数の取得・Windows APIを利用したダイアログ表示や環境変数操作にも対応しています。
1. 基本仕様
・変数とデータ型
- 数値変数: 下記のルールの下で名前を自由に付けられます(例:
count,val1)。初期値は0です。 - 文字列変数: 下記のルールの名前の末尾に
$を付けます(例:name$,msg$)。初期値は空文字""です。
変数名および後述の関数名は、アンダーバー(_)またはアルファベットで始まり、数字・アンダーバー(_)・アルファベットが続くというルールで付けます。英大文字・小文字を区別しません。
・即値
基本的に数値は10進数で指定します。32bitで表現可能な範囲(-2147483648 〜 2147483647)を扱えます。0xで始まると16進数、0bで始まると2進数が指定できます。
・文字列リテラル
ダブルコーテーション "..." またはシングルコーテーション '...' で囲みます。
- エスケープシーケンス:
\n(改行),\t(タブ),\\,\"などが利用可能です。 - RAW文字列:
@を頭に付けると、\をそのまま文字として扱います。
例:@"C:\Users\Documents"(Windowsのパス指定に便利です)
・コメント
#, //, ; で始まる行は、行末までコメント(何も行わない)となります。
2. 演算子
| 演算子 | 動作 |
|---|---|
+ | 数値同士は加算、文字列が含まれる場合は連結します。 |
- | 数値同士を減算します。 |
* | 数値同士を乗算します。 |
/ | 数値同士を除算します。0で割るとエラーになります。 |
% | 数値同士を除算した余りを求めます。0で割るとエラーになります。 |
= | 変数代入を行います。 |
+= , -= | 加算・減算しつつ変数代入を行います。 1増加・1減少させたい場合の書き方として、a++, a--,++a,--aという書き方もできます。 ただし、a++, a--の場合は、加算・減算前の値が評価結果となります。 |
<< , >> | 左シフト、右シフト。 |
*= , /= , %= ,<<= , >>= ,|=, &=, ^= | [1.26.01βから]各演算を行いつつ変数代入します。 |
| , & | ビット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() | 現在のローカル日時の、年・月・日・曜日・時(24h表記)・分・秒・ミリ秒を返します。 曜日は、0=日曜日, 1=月曜日, … , 6=土曜日を意味します。 ミリ秒とは、1000ミリ秒=1秒です。 |
srand(n) | 数値nで疑似乱数を初期化します。 |
rand() | 疑似乱数を返します。 |
GetFR_ScriptVersion() | [1.26.01βから]FR-Scriptのバージョン番号を数値で返します。(ver.X.YY.ZZ ⇒ XYYZZ) |
GetSystemMetrics(n) | [1.26.01βから]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) | n バイト目から m バイト抜き出します。 |
toStr$(n) | 数値を10進数文字列に変換します。 |
toStr16$(n), toStr2$(n) | 数値を16進数文字列, 2進数文字列に変換します。 |
toInt(s$) | 文字列を数値に変換します。 |
GetAsciiCode(s$, n) | [1.26.01βから]文字列s$のnバイト目の文字コードを返します。nが範囲外の場合は-1を返します。 |
AsciiCode$(n) | [1.26.01βから]文字コードnの1バイトからなる文字列を返します。 |
Replace(s$, r1$, r2$) | [1.26.01βから]文字列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$) | エラー(×),警告(!),情報(i)アイコン付きのメッセージボックスを表示します。 |
5. サンプルコード
// ユーザーへの挨拶と環境変数の表示
user$ = getenv$("USERNAME")
IF (Question(user$ + "さん、環境を表示しますか?", "確認")) {
path$ = getenv$("PATH")
Information("PATHの内容: " + left$(path$, 50) + "...", "システム情報")
}
6. その他
構文エラーがある場合や、ゼロ除算・関数名が見つからないなどの場合は、エラーが発生した行番号がメッセージダイアログで表示されます。
RF-Scriptについて:
このスクリプトは、いじくるつくーる(Rnsf ver.7)に搭載されていたR-Scriptの軽量版となります。for, goto, 配列, 条件演算子などの一部機能や、大部分の関数(ファイル・レジストリ操作系・ダイアログ構築系・DLL呼び出し・正規表現等)は省かれています。ただし、コールバックによるスクリプト呼び出し元アプリケーションによる機能提供が可能です。
RF-Scriptの構築、このマニュアルの作成について:
R-Scriptのインタプリタの作成、および、このマニュアルの作成は、生成AIによるプログラミング手法の確立を目的に、テキストで書かれた文法書を、生成AIのGeminiに渡して作成したコード(lex, yacc, C++)をベースに、作者の手により手直し、あるいは、生成AIとの相談による修正を経て、作成されました。極めて素早い期間での構築となりました。
設定
目次へ
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は、右上の作成日付の時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
■このページに関するご意見をお待ちしております → フィードバックページ

動作原理(プログラム解説)
マウスの動きを自由にカスタマイズするためのFR-Script解説