# ひまわりエディタの制御

＊この話題は、少し高度な内容です。ひまわりのプログラムに慣れてから読んでください。

# マクロ

ひまわりエディタを、ひまわりから制御することにより、ひまわりエディタにマクロ機能を追加できます。
ひまわりエディタにある、マクロタブや、メインメニューの[ツール]から実行できるひまわりのマクロは、ひまわりのtoolsフォルダに入ってます。
そのマクロとエディタで、やりとりを行う方法が用意されています。

## 受け渡し方法

受け渡しの方法に、WINDOWメッセージの、COPYDATAを使う方法があります。ひまわりからCOPYDATAを送信するには、『COPYDATA送信』という命令があります。この命令を使って、ひまわりエディタにさまざまなコマンドを送ることにより、ひまわりエディタを遠隔操作できます。

' エディタに文字を挿入する例： デバッグエディタハンドルに、『insert テスト』を、COPYDATA送信。

上のプログラムをマクロに登録し、ひまわりエディタから起動すると、カーソル位置に『テスト』という文字が挿入されます。
『デバッグエディタハンドル』変数とは、ひまわりエディタ自身のWINDOWハンドルを表してます。
よって、このデバッグエディタハンドルに対して、いろいろなコマンドを送信することで、ひまわりエディタを遠隔操作できるという按配です。

例えば、ひまわりエディタの選択部分を全角文字に変換するマクロなら、以下のようになります。

デバッグエディタハンドルに、『copy』を、COPYDATA送信。 0.3秒、待つ。'---(*1) クリップボード取得して、全角変換して、コピー。 デバッグエディタハンドルに、『paste』を、COPYDATA送信。

(*1)COPYDATAは、WINDOWメッセージなので、送信してすぐにデータが処理されるとは限りませんので、文字列送信後、ちょっと待ってからクリップボードの内容を取得します。

## マクロコマンド

> コマンド | 説明
> new | エディタを初期化します
> open ファイル名 | ファイル名に指定したファイルを開きます。
> save | 現在編集中のファイルを保存します。
> saveas ファイル名 | ファイル名に指定したファイルへ編集中のプログラムを保存します。
> insert 文字列 | 文字列を、現在のカーソル位置に挿入します。
> getlabel ファイル名 | プログラム中のラベルを列挙し、ファイル名へ保存します。
> row 行番号 | カーソルを行番号に移動します。
> col 列番号 | カーソルを列番号に移動します。
> copy | 現在選択中のテキストをクリップボードへコピーします。
> paste | クリップボードの内容を、エディタへ貼り付けます。
> seltext_save ファイル名 | 選択中のテキストを、指定ファイルへ保存します。
> seltext_open ファイル名 | 選択中のテキストを、指定ファイルの内容に書き換えます。
> makeexe | 配布用実行ファイルの作成ダイアログを表示します。 （編集中プログラムを実行ファイルに変換します。）

■エディタのマクロへ登録

> ひまわりのエディタのマクロへ、ひまわりのプログラムを登録して使うのは簡単です。
> ひまわりの、toolsフォルダを見ると、「tool.txt」というテキストファイルがあります。
> これを、エディタで開いてみると、

> -ジャンル名 |マクロ登録名, マクロファイル名 |マクロ登録名, マクロファイル名 |マクロ登録名, マクロファイル名 -ジャンル名 |マクロ登録名, マクロファイル名 ...

> と、命令の一覧が並んでいます。
> これを、自分なりにちょっと変更すれば、自分の好きなツールのリストが出来上がります。
> 便利なマクロを作って、快適マクロ生活をはじめよう！

〜以下は、DDEを使ったひまわりエディタの制御方法です。〜下位互換性のために残されており、最新のバージョンでは、COPYDATAを使う方法を推奨してます。

■ひまわりで、ＤＤＥを使う

> ひまわりは、Windowsが、アプリケーションの通信に利用しているＤＤＥを、利用することが出来ます。また、ひまわりのエディタである、himapad.exeも、ＤＤＥの受信（サーバー）に対応しています。

> （実際、ひまわりの命令挿入などで利用されるダイアログは、このＤＤＥ機能を使った、ひまわりのプログラムにより、作られています。）

■メリット

> ひまわりのエディタをプログラムから操作することにより、文章の挿入・置換など、定型処理を簡単に出来ます。
> （今はまだエディタの機能が貧弱なので、出来ることが限られますが、将来的には、ひまわりのエディタをひまわりで完全制御できるようにするつもりです！）

■使い方

> himapadに、コマンドを送るには、「ＤＤＥ送信」という命令を使います。
> 例えば、現在編集しているプログラムを保存するには、

> 『himapad』の,『command』に,『save』を,DDE送信。

> と、書きます。
> （３つ目の『』の中を、以下のコマンドに書き換えます。）

> コマンド | 説明
> new | エディタを初期化します
> open ファイル名 | ファイル名に指定したファイルを開きます。
> save | 現在編集中のファイルを保存します。
> saveas ファイル名 | ファイル名に指定したファイルへ編集中のプログラムを保存します。
> insert 文字列 | 文字列を、現在のカーソル位置に挿入します。
> getlabel ファイル名 | プログラム中のラベルを列挙し、ファイル名へ保存します。
> row 行番号 | カーソルを行番号に移動します。
> col 列番号 | カーソルを列番号に移動します。
> copy | 現在選択中のテキストをクリップボードへコピーします。
> paste | クリップボードの内容を、エディタへ貼り付けます。
> seltext_save ファイル名 | 選択中のテキストを、指定ファイルへ保存します。
> seltext_open ファイル名 | 選択中のテキストを、指定ファイルの内容に書き換えます。
> makeexe | 配布用実行ファイルの作成ダイアログを表示します。 （編集中プログラムを実行ファイルに変換します。）

■サンプル「選択しているテキストを置換する」

> 以下のサンプルは、エディタの選択している部分を、大文字に変換するプログラムです。

> `'エディタの選択中テキストを大文字に変換する "himapad"の、"command"へ、"copy"を、DDE送信。'***1 「テキストを大文字にします」と、二択。 もし、それが、いいえならば、おわり。 クリップボードを、開く。 それを、大文字変換。'***2 クリップボードへ、保存。 "himapad"の、"command"へ、"paste"を、DDE送信。'***3 おわり`

> ***1: ひまわりのエディタへ、選択領域をクリップボードにコピーしなさいと、命令。
> ***2: クリップボードの内容を、それに得て、大文字に変換
> ***3: ひまわりのエディタへ、クリップボードの内容を選択領域へ貼り付けなさいと、命令。

戻る