Written in Japanese(UTF-8)
2014.8.30
INASOFT
2014.8.30
INASOFT
/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/
本ソフトウェアの開発は終了しています。ヘルプに記載されている情報も古いものになっています。
R-Script プログラマーズガイド(3/7)
ここには R-Scriptを使ってレジストリ編集ツールを作りはじめる際の手助けになる文章が書かれています。
このコーナーのトップページはこちら。
※このページのサンプルプログラム中で、表示の都合上で1行に入りきらずに改行している場合がありますが、実際にスクリプトを作るときには改行を入れないようにして下さい。R-Scriptは、基本的に行を単位にして実行を行っています。
3. チェックボックスを作ってみよう
3.1 素直なレジストリエントリの場合
ここでは、R-Scriptが最も得意とするような、DWORD型で 1でON、0でOFF になるようなレジストリエントリを扱うような設定項目を作ってみます。
ITEM = 練習用スクリプト INFORMATION = 練習用に作られたスクリプトです HELP = TEST.TXT %% checkbox( "checkbox1", 0, "チェックボックス(&C)", "HKEY_CURRENT_USER\\Software\\Company\\Software\\Version", "onoff", CTRL_NORMAL )
checkbox_dw01() の第1引数は、チェックボックスのIDです。ここでは作成のときしか使いません。
第2引数は、デフォルトの値です。指定されたレジストリエントリが存在しない場合に利用されます。
第3引数は、チェックボックスの右側の表示する文字列を指定します。(&C) というのはアクセラレータキーの指定で、& の後に書かれたアルファベットに下線がつきます。実行中は、キーボードからそのキーを押すか、Altを押しながらそのキーを押せば、すばやくキーボードからアクセスできます。
第4引数は、レジストリキーです。
第5引数は、エントリです。
第6引数 CTRL_NORMAL は、おまじないです。
これで、レジストリキー
HKEY_CURRENT_USER\Software\Company\Software\Version
エントリ
onoff
にあるデータの 1 or 0 を、チェックボックスのオン/オフで切り替えられるようなレジストリ編集ツールができあがりました。
なお、レジストリを書き換えた後に、値を書き変えたことを他のアプリケーションに通知したい場合は、CTRL_NORMAL の部分を CTRL_NOTIFY にします。
レジストリを書き換えた後に、Windowsを再起動したい場合は、CTRL_NORMAL の部分を CTRL_REBOOT にします。
R-Scriptが標準で準備している関数は、他には、
- checkbox_bin() … バイナリ型のレジストリエントリの特定のビットのON/OFFを扱う。
- checkbox_bindw() … REG_DWORD型のレジストリエントリの特定のビットのON/OFFを扱う。
また、CTRL_NORMAL の部分を次のように変えることができます。
- CHECK_SZ01 … REG_SZ型の "1"/"0" を扱う。
- CHECK_SZYN … REG_SZ型の "yes"/"no" を扱う。
- CHECK_SZTF … REG_SZ型の "true"/"false" を扱う。
3.1 素直でないレジストリエントリの場合
ある機能がオンだったら、(REG_DWORD) 7 という場合もあるかもしれません。そういう場合は、R-Scriptの標準の関数1つでは対処できないので、命令部で少し複雑なプログラムを組むことになります。
value = RegReadInt( "HKEY_CURRENT_USER\\Software\\Company\\Software\\Version", "7off", 0 ) if ( value == 7 ) { status = 1 } else { status = 0 } checkbox( "checkbox2", status, "複雑なチェックボックス", CTRL_NORMAL ) exit :ok if ( 1 == GetCheckBox( "checkbox2" ) ) { value = 7 } else { value = 0 } RegWriteInt( "HKEY_CURRENT_USER\\Software\\Company\\Software\\Version", "7off", value )
まず、現在のレジストリの状態を取得します。
REG_DWORD型のエントリからデータを読み出すには、RegReadInt() 関数を使います。
RegReadInt() の第1引数はレジストリキー、第2引数はエントリ、第3引数は、エントリが存在しなかった場合のデフォルトの値です。ここでは得られた値を value という変数に代入しています。
次の行では、value という値が 7 ならば status を 1 にし、そうでなければ status を 0 にしています。
checkbox() 関数は、チェックボックスを作ります。
このとき、第1引数はIDで、"checkbox2" というIDを付けますが、これを使って、後でチェックボックスの状態を読み出します。
第2引数にはチェック状態を書きますが、事前に value の値を調べた結果の status がありますので、ここでは status を状態として書いています。
第3引数は、チェックボックスの右に表示される文字列です。
その次の行に exit とありますが、これは正常終了をインタプリタに伝えます。
もしこれを書かないと、そのまま :OK のところにまで制御が移ってしまい、意図とは違う動作をすることになります。
ダイアログが表示されると、ユーザーがチェックボックスをONまたはOFFにします。
[OK]ボタンが押されると、スクリプトの :OK から実行が開始されます。
(これを、「:OK を呼び出す」と表現していることがあります)
GetCheckBox() 関数は、引数で指定されたIDを持つチェックボックスの状態を調べます。
ONならば 1、OFFならば 0 が返ります。
次の行は、GetCheckBox() の値に応じて、value に、レジストリに書き込むべき値を代入しています。
RegWriteInt() は、レジストリに数値を書き込みます。
第1引数がレジストリキー、第2引数がエントリ、第3引数が、書き込みたい値です。
なお、C言語などで複雑な文を書き慣れている人には、命令部を次のように書くと短く書けます。
checkbox( "checkbox2", RegReadInt( "HKEY_CURRENT_USER\\Software\\Company\\Software\\Version", "7off", 0 ) == 7, "複雑なチェックボックス", CTRL_NORMAL ) exit :ok RegWriteInt( "HKEY_CURRENT_USER\\Software\\Company\\Software\\Version", "7off", GetCheckBox( "checkbox2" ) ? 7 : 0 )
戻る 次へ
目次
R-Scriptについて
プログラマーズガイドの目次
※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
このページに関するご意見の受け付けは終了しています。