[スレッド全体]

2007/4/2 (月) 15:07:38  
[366] サクラエディタのマクロでこういうことしたいのですが教えてください。

メールの返信のときに引用したい文章の各行の頭に”> ”を追加しようとしています。メーラーにその機能がないので、一旦サクラエディタを起動し、引用したい文章を貼り付け、以下のPPAマクロを実行して、できあがった文字列をコピーしてメーラーで貼り付け使用してます。

//PPAマクロ
begin
  S_ReplaceAll('^.', '> $&', 148); // 選択範囲の行頭を > に置換する。
  S_CancelMode(0); // 各種モードの取り消し 選択状態を解除する。[Esc]キーと一緒。
  S_SearchClearMark(0); // 検索マークの切替え
  S_MoveHistPrev(0); // 移動履歴: 前へ
  S_ReDraw(0); // 再描画
end;

やりたいのは、引用したい文章をコピーして、右クリックして”サクラエディタで開く”を実行します。サクラエディタではエディタオープン時の自動実行マクロか何かでクリップボード内の文字列に上記マクロを実行して、マクロの中でクリップボードにコピーしてすぐに終了してしまうというものです。そうしますと”> ”が追加された文字列をメーラーですぐに貼り付けることができるのではないかと思いました。
いまいちサクラエディタとPPAマクロに詳しくないので可能かどうかさえ分かりません。
こういうことしたいのですがどうすればできるのか教えてください。よろしくお願いします。
もし、別のサイトでこういう問い合わせを受けているというのがありましたらそれでもですのでよろしくお願いします。また、申し訳ありませんが質問されても夜にしか返信できませんのでご了承ください。
マクロ初心者
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.3); (R1 1.5); InfoPath.1)


2007/4/3 (火) 03:19:11  
[367] RE: サクラエディタのマクロでこういうことしたいのですが教えてください。

> メーラーにその機能がないので、一旦サクラエディタを起動し、引用したい文章を貼り付け、以下のPPAマクロを実行して、できあがった文字列をコピーしてメーラーで貼り付け使用してます。

その程度なら PPA でなくキーボードマクロで十分だと思う。
というか、変数も何も無いし、わざわざ PPA 使う意味無いんじゃ。

どうせなら、マクロの先頭で貼り付けして、
最後で全文を範囲選択してコピーするあたりまでやっちゃえば?

1.メーラーとやらで処理対象のテキストを範囲選択してコピー
2.新規サクラエディタのウィンドウを開く。
3.下記マクロを実行する。(勝手にテキスト処理されて最後にエディタウィンドウが閉じる)
4.メーラーとやらで貼り付け実行

----- なんとか.mac -----
//キーボードマクロのファイル
S_Paste(0);        // 貼り付け

S_ReplaceAll('^', '> ', 148); // 選択範囲の行頭を > に置換する。何も選択されていない場合、全テキストが処理される。

S_SelectAll(0);        // すべて選択
S_Copy(0);        // コピー

S_Undo(0);        // 元に戻す
S_Undo(0);        // 元に戻す
S_WinClose();        // ウィンドウを閉じる
--------------------

> サクラエディタではエディタオープン時の自動実行マクロか何かで
これは無理だから。自動実行の類は無いから。

でも、一番楽なのはサクラエディタじゃなくて perl か何かを使用する事だと思う。

Active Perl でもインストールしておいて、下記(実質内容4行)の
スクリプトを用意しておけば、後はそのファイルをクリックして
実行するだけです。

1.メーラーとやらで処理対象のテキストを範囲選択してコピー
2.下記、スクリプトファイルをマウスで突くだけ。
 # あるいはコマンド「perl C:\〜〜\test.pl」を実行する。
3.メーラーとやらで貼り付け実行

----- test.pl -----
#!perl

use Win32::Clipboard;               # Win32::Clipboard を使うわよ、の宣言
$data = Win32::Clipboard::Get();    # $data にクリップボードの内容を格納
$data =~ s/^/> /mgo;                # $data の各行の行頭に "> " を付ける
Win32::Clipboard::Set($data);       # $data の内容ををクリップボードにセット
--------------------
すい
INCM1.23c


2007/4/3 (火) 05:35:56  
[368] Re2: サクラエディタのマクロでこういうことしたいのですが教えてください。

> でも、一番楽なのはサクラエディタじゃなくて perl か何かを使用する事だと思う。
> Active Perl でもインストールしておいて、下記(実質内容4行)の
> スクリプトを用意しておけば、後はそのファイルをクリックして
> 実行するだけです。


さっそくの回答ありがとうござました。
Active Perlをインストールして殆どやりたいことができました。
もしかしてWSHでも同じことができるのかな・・・?
とにかくありがとうござました。感謝です。
マクロ初心者
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


2007/4/3 (火) 09:47:56  
[369] Re3: サクラエディタのマクロでこういうことしたいのですが教えてください。

> もしかしてWSHでも同じことができるのかな・・・?

WSHでもやれないことは無いですが、直接クリップボードを触れないので
下みたいな回りくどい感じになりますね。

var oIExp = WScript.CreateObject("InternetExplorer.Application");
oIExp.Navigate("about:blank");
while(oIExp.Busy){ WScript.Sleep(10); }
var oClip = oIExp.Document.parentWindow.clipboardData;
var sText = oClip.getData("TEXT");
sText = sText.replace(/([^\r\n]+\r?\n?)/g,"> $1");
oClip.setData("TEXT", sText);
oIExp.Quit();
di
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Sleipnir/2.5.9

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81