マクロ登録(秀丸メール本体側)ダイアログボックス(Ver7.30対応版)
秀丸メール本体側ページ
マクロ1〜マクロ36
 ここに登録したマクロは、秀丸メール本体の「マクロ」メニューの中に表示され、メニューから起動できます。キー割り当てすればキー一発で起動することもできます。

 「タイトル」にはメニューに表示する文字列、「ファイル名」にはマクロ本体を指定してください。

 「上へ」または「下へ」ボタンでマクロの並び順が入れ替えできます。さらに「キー割り当ても入れ替え」をONにして上へ/下へボタンを押せば、キー割り当てもセットで入れ替わります。


検索結果の一覧ページ
検索結果の所でも使えるようにする
 秀丸メール本体側用に登録したマクロを検索結果の一覧上でも実行可能なように指定します。検索結果の一覧上でも実行するためには、ここのオプションをONにして、さらに実行可能にするマクロの範囲を選択して、それとは別に、 「設定・キー割り当て...」の所でマクロに対して適当なキー割り当てをする必要があります。
 このように設定をすれば、検索結果の一覧上で、割り当てたキーを押すことによって、マクロが実行できます。
上記で指定した以外のマクロを検索結果実行しようとしたら…
 上記以外のマクロを何らかの方法(例えばキー割り当てしたキーで)で実行しようとした場合に、それをどういう扱いにするか指定します。ここのオプションがOFFの場合はマクロは実行されませんが、ONにした場合は、現在選択しているメールを秀丸メール本体上で選択した上で、秀丸メール本体上でマクロ実行するようになります。


自動起動ページ
秀丸メール起動時
 秀丸メール起動時に自動実行するマクロを指定します。起動時に特定のフォルダを選択したり、送受信を実行したりしたい場合はここにマクロを登録しておいて、そのマクロで処理させてください。
 常駐秀丸メールがONになっている場合には、常駐秀丸メールが起動するタイミング(または常駐秀丸メールと秀丸メール本体が同時に起動するタイミング)でここのマクロが実行されます。 既に常駐秀丸メールが起動している状態で秀丸メール本体ウィンドウが出てきた場合、マクロは実行されません。


秀丸メール終了時
 秀丸メール終了時に自動実行するマクロを指定します。終了時に振り分けしたい場合など、振り分け用のマクロを作ってここに登録するとよいでしょう。
 常駐秀丸メールがONになっている場合には、常駐秀丸メールと秀丸メール本体ウィンドウの両方ともが終了するタイミングでここのマクロが実行されます。例えば秀丸メール本体を終了しても、常駐秀丸メールがまだ残っている場合、マクロは実行されません。


受信が一段落した時
 受信の動作をした時に起動するマクロを指定します。ここにマクロを登録すると、受信系の動作をした時に必ずマクロが実行されます。受信したメールが1通も無かった場合でも実行されます。

注1:
 以前のバージョンでは1通以上受信した時に限って実行されていましたが、仕様変更となりまして、1通も受信しない場合であっても必ずマクロ実行されます。


注2:
 「全般的な設定・送受信」の「何か受信したときにメッセージ表示する」がONの場合、「何通受信しました」のメッセージにOKかキャンセルしてからでないと、ここのマクロは実行されません。


受信が一段落した時用のマクロをエディタ・ウィンドウ上でのマクロと並行して実行出来るようにする
 定期受信をONにしている場合だと、何かメールを編集している最中に、裏で定期受信が動作し、受信が一段落した時用のマクロが裏で自動実行されることがあります。このとき、メールを編集しているウィンドウで何かマクロを実行する操作をすると、裏で動いているマクロが終了するまで、その操作が待機状態となります。
 ここのオプションをONにすると、秀丸メール本体側での「受信が一段落した時」用のマクロが通常のマクロとは独立した別空間で実行されるようになり、結果として、エディタ・ウィンドウ上でのマクロが、裏で定期受信が動いていることも気にせず実行出来るようになります。
 だだし、以下の制限があります。

  • 「受信が一段落した時」に実行するマクロの中では、エディタ・ウィンドウを起動したりアクティブウィンドウをエディタ・ウィンドウに切り替えたりするような操作は一切できません。そういう命令や関数呼び出しを実行すると、エディタ・ウィンドウが出てきた後もマクロは秀丸メール本体上で実行され続けてしまい、結果としてマクロが期待した動作をしません。→Version 6.42より、MakeReplyやNewMail等のエディタ・ウィンドウを新規作成する関数を呼び出しした場合に限ってエラーメッセージを出すようにしました。
  • エディタ・ウィンドウ上でマクロ実行出来るといいつつも、そのマクロの中からtkinfo.dll関数を呼び出して、その関数の処理が秀丸メール本体ウィンドウと連携するようなことになると、そこでが一時的にマクロ実行が停滞します。例えばNextMail関数呼び出しなどでそういうことが起こります。秀丸メール本体側でのマクロが終了すると再開します。
  • 「受信が一段落した時」のマクロを実行する時に、秀丸メールのプログラム用フォルダにある「hidemac3.dll」が秀丸メールのデータ用フォルダに別名(hidemac3_indpXXXXX.dllのようなファイル名)でコピーされ、それがロードされて実行されます。実行された後に、そのファイルは削除されずにずっと残ります。
  • 制限という訳では無いですが、このオプションをONにして動作させるテストはそんなにしてないし、そもそもマクロを2つ並行して動作させるのはちょっと無茶がありまして、何か予期せぬ不都合(いわゆるバグ)が出る可能性が多々ありそうな気はします。

 その辺ご注意の上ご利用ください。


送信用のエディタ起動時
 「新規メール」、「返信メール」、「転送メール」などのコマンドでエディタが起動した時に自動実行するマクロをここで指定します。
 例えば、テンプレートとは別にいろいろと整形などしたい時に、マクロで処理させることができます。
 「そのまま転送」コマンドでエディタを起動した時に限り、ここで指定したマクロは自動実行されません。
 ここのマクロでメールを書き換えると、メールは書き換わった扱いになり、後でEscキーで閉じようとすると、警告が表示されます。メールが書き換わってない扱いにしたい場合は、マクロの最後で「clearupdated;」を実行してください。


あとで送信/今すぐ送信時
 送信用のメールをエディタで開いていて、「あとで送信」または「今すぐ送信」を実行したときに自動実行するマクロを指定します。送信の前に編集したい場合などに使います。

 メールを草稿に保存しただけではここのマクロは実行されません。したがって、草稿に保存したメールが未送信フォルダに移動されただけの場合だとマクロが実行されることなく送信されてしまいます。そういうことを避けるためには、草稿に保存したメールは一度エディタで開き、「あとで送信」と操作することで未送信フォルダに移動させるよう、使う側で注意する必要があります。
 ここのマクロの中でSetCancel関数を呼び出すことで、送信をキャンセルさせることも出来ます。


未送信メールを開いた時
 草稿フォルダに保存したメールをエディタ・ウィンドウで開いた時、または未送信フォルダのメールをエディタ・ウィンドウで開いた時に自動実行したいマクロがある場合は、ここでそのマクロを指定します。


送受信の開始直前
 秀丸メール本体ウィンドウ上で送受信系のコマンドを実行した場合、またはメールエディタ上で「今すぐ送信」を実行した場合に、送受信そのものを実行する直前に実行するマクロを指定します。
 ここと、「後で送信/今すぐ送信時」の両方にマクロが登録されている場合で、メールエディタ上で「今すぐ送信」を実行した場合は、「後で送信/今すぐ送信時」のマクロが先に実行されてから、次にここで指定されたマクロが実行されます。
 送受信系のコマンドがマクロの中から呼び出されて実行された場合は、ここで指定されたマクロは実行されません。
 ここで実行されたマクロからは、tkinfo.dll関数のGetTransmitCommandCode関数を使って、具体的にどういうコマンドでマクロが呼び出されたのか知ることが出来ます。
 ここのマクロの中でSetCancel関数を呼び出すことで、直後に始まる予定の送受信をキャンセルさせることも出来ます。


アカウント切り替え時
 フォルダ枠をマウスまたはキーボードで操作して「現在のアカウント」が切り替わったタイミングで起動するマクロを指定します。
 例えばカーソル移動キーでアカウントを選択しただけだとここのマクロは実行されず、アカウントを展開して受信フォルダ等の何らかのフォルダ(メールが存在可能なフォルダ)が選択されたタイミングで初めてマクロが起動されます。
 マクロを実行している最中にアカウントが切り替わった場合はここの自動起動マクロは起動しません。
 追加:ここで指定したマクロは、アカウントグループを選択した場合にも起動されます。具体的には、アカウントグループを選択してから0.5秒程度そのまま放置するとマクロ起動されます。


本体ウィンドウを開いた時/閉じる時
 「全般的な設定・基本」での「タスクトレイに常駐」がONの時に、タスクトレイの常駐アイコンから秀丸メール本体を呼び出したり、秀丸メール本体を閉じた時(常駐アイコンのみに移行させる時)に自動実行するマクロを指定します。
 「閉じる時」のマクロでは、tkinfo.dllのSetCancel関数によって「閉じる」という動作をキャンセルさせることが出来ます。「開いた時」のマクロは、秀丸メール本体ウィンドウが開いた後に実行される関係もあって、SetCancel関数は使えません。


エディタ側ページ
秀丸エディタのマクロメニューをそのまま出す
 ここをONにすると、秀丸エディタで割り当てているマクロメニューをそのまま秀丸メールのメールエディタ上に出します。


秀丸メール側で指定する
 ここをONにすると、秀丸エディタ側で割り当てているマクロを秀丸メールのメールエディタ側には表示せず、秀丸メール独自にマクロメニューを表示します。
 ここがONの場合でも、秀丸エディタ側で例えばマクロ1に何かキー割り当てしていたとしたら、そのキーを押すことで実行されるのは秀丸エディタ側で割り当てられているマクロです。


マクロ1〜マクロ20
 ここに登録したマクロは、メールエディタの「マクロ」メニューの中に表示され、メニューから起動できます。キー割り当てすればキー一発で起動することもできます。

 「上へ」または「下へ」ボタンでマクロの並び順が入れ替えできます。さらに「キー割り当ても入れ替え」をONにして上へ/下へボタンを押せば、キー割り当てもセットで入れ替わります。


秀丸メール本体と同期
 秀丸メール本体ウィンドウ側のマクロ1〜マクロ20の割り当て内容を、エディタ・ウィンドウ用のマクロ1〜20にコピー(同期)させます。


エディタ側・自動起動ページ
 エディタ・ウィンドウ上でメールを作成または既存のメールを改変するモードの時に限り、秀丸エディタでの自動起動マクロ相当のことが出来ます。
注意点:
 ここで指定する自動起動マクロは、秀丸メール本体上や検索結果のウィンドウ上など、秀丸エディタ相当部分がある所ではどこででも実行されます。秀丸エディタと違ってカーソル非表示(閲覧モード相当)、上書き禁止状態の場合も多いです。自動起動されるマクロでは、そういった条件でもうまく動くような配慮が必要です。

編集後タイマー
 編集した後に自動実行するマクロを指定します。タイマーの時間をミリ秒単位で指定すると、編集をしてからその時間分だけ待ってからマクロを実行します。
 遅延時間に「0ms」を指定した場合、1回の編集操作で2回マクロが実行されることがありえます。例えば範囲選択した文字列の上で何か文字入力すると、範囲選択した文字列を削除してマクロが1回実行され、その後の文字入力の後にもマクロ実行されます。「1ms」以上の値を指定した場合は編集が一段落した後に1回だけマクロ実行されます。


カーソル移動後タイマー
 カーソル移動した後に自動実行するマクロを指定します。


アクティブ切り替え後
 秀丸メール本体ウィンドウまたはエディタ・ウィンドウをアクティブにしたタイミングで自動実行するマクロを指定します。


キャッシュファイルを自動的に作成して高速化する
 ここのオプションをONにすると、自動起動するマクロのキャッシュファイルを作成して、マクロの実行を高速化します。




常駐秀丸メール
 常駐秀丸メールがONの時に、その常駐秀丸メールのアイコンを左ボタンクリックした時のメニューに対して、マクロ実行用のメニューを表示させる指定が出来ます。


コマンド置き換え
 特定のコマンドを実行しようとした時に、そのコマンドを実行する代わりにマクロを実行させることが出来ます。
 詳細:コマンド置き換えダイアログボックス


マクロの代わりにDLLを呼び出す指定
 マクロの代わりに、ユーザー様の作成されたDLLを呼び出すことが出来ます。
 秀丸メールでは、複数のマクロを並行して実行することが出来ません。なので、例えばエディタでメールを編集している最中に定期受信が起動して、その結果自動起動マクロが動作すると、それによってエディタ上でマクロ実行が出来なくなって、不便なことが多いです。そういうユーザー様は、「受信が一段落した時」のマクロの代わりにユーザー様の作成されたDLLを呼び出すようにしておいて、そのDLLの中で、マクロでやるようなことをやる、という作戦が可能です。
 (実際にそういうDLLを作成するにはかなりのスキルが必要ですけども)

 マクロの代わりにDLLを指定するには、マクロファイル名の所に、「DLL|ファイル名」と指定するか、または「DLL|ファイル名,エントリー名」のような形を指定してください。
 エントリー名を省略した場合は、"Entry"という関数を呼び出します。
 呼び出される関数は、いわゆる「_cdel」の呼び出しエントリー形式になってる必要があります。


 マクロ登録コマンド(秀丸メール本体側)