[質問]鶴亀エディタの内容を秀丸で開く方法No.03323
プックン さん 01/05/16 13:40
 
[質問]鶴亀エディタの内容を秀丸で開く方法

鶴亀のエディタで開いているファイル内容を、(内容をcopyして)秀丸で開きたい
といった操作を簡単できたら便利だなとおもいマクロで作ろうとして
みました。しかしうまくつくれませんでした。
下記の期待する動作をするには、どのようにマクロをつくればいいか
ご指導願います。

期待動作
    鶴亀メールのエディタで開いている受信メールの内容をcopyし、
    秀丸エディタを起動して貼り付ける。
    条件:
    クリップボードを使用せず、鶴亀メールのエディタから文字列を取得する。
    取得する文字数に制限がある場合は、制限数の最大データを取得する。

トライアル
1.
    失敗
    "gettext"コマンドで文字列を取得して処理すればいいかなと思って
    作ってみたら、メールを全文取得してみると"文字列の長さが長すぎるとエラー"
    となってしまいました。

2.
    失敗
    鶴亀のマクロ関数"RootBody"を使用して、実行すればできるかなと思ってトライ。
    うまく動かないのでなんでだろと不思議に思っていたら、Helpに
    返信元メールまたは、転送メールの本文全体を返します。
    と書いていた。通常にメールを開いているだけのメールでは処理できない
    のでうまく文字列を取得できなかった。

3.
    失敗
    とりあえず文字列の取得ができた場合の後処理を考えた。
        gettextで短い文字列を取得
        秀丸を起動マクロ"openfile"コマンドを実施
        鶴亀からopenfileコマンドが使えないと怒られた。
4.
    失敗
    3.のファイルopen方法をrunコマンドを使用して秀丸を起動する
    ようにトライ。
        runコマンドで秀丸を起動
        起動した秀丸ハンドル"hidemaruhandle"を取得しようとしたが
        うまくいかなかった。

//-------------------------------------------
    //文字列が長いとエラーになるので移動を止めた
//  gofileend ; //ファイルの最後に移動
//  $$s = gettext( 0, 0, x, y ) ;
    //一部のみ取得
    $$s = gettext( 0, 0, x, y ) ;
    //文字列取り込み
    //x1,y1からx2,y2の範囲にある文字列を返します。
//  message $$s;
    //元ファイルの秀丸ハンドルを取得
    #fh = hidemaruhandle( 0 );
//  message str(#fh) ;
    //秀丸起動
    run hidemarudir + "\\hidemaru.exe" ;
    //起動した秀丸のハンドルを取得。
    #backfh = hidemaruhandle( 0 );
//  message str(#backfh) ;
    insert $$s;
    setactivehidemaru #fh ;

LEND:
    endmacro;


[ ]
RE:03323 [質問]鶴亀エディタの内容を秀丸で開く方法No.03324
ふじき さん 01/05/16 15:40
 

 ふじきです。

┌───────────────────────────────────
│2001/05/16 13:40:41頃に送信されたと思われる
│プックンさんのメール
│Message-Id: <xxxxxxxxxxxxxx@maruo.co.jp>
│Subject: turukame.2:03323| [質問]鶴亀エディタの内容を秀丸で開く方法
│を引用:(改行位置を変更している場合があります)

>[質問]鶴亀エディタの内容を秀丸で開く方法

>鶴亀のエディタで開いているファイル内容を、(内容をcopyして)秀丸で開きたい
>といった操作を簡単できたら便利だなとおもいマクロで作ろうとして
>みました。しかしうまくつくれませんでした。
>下記の期待する動作をするには、どのようにマクロをつくればいいか
>ご指導願います。

 SaveDraftして、MailFilePathでファイル名を取って、
 runで秀丸を開くっていうのでどうでしょう?
 ファイルを新規に作りたいのであれば、
 秀丸のマクロを作って秀丸に起動パラメタを付けて呼び出すとか。

 こんな感じでしょうか・・・。

---鶴亀側---
loaddll "TKInfo.dll";
$filename = dllfuncstr("MailFilePath","");
$param = "/b /h /xtkmnew.mac \"" + $filename + "\"";
run hidemarudir + "\\Hidemaru.exe " + $param;

---秀丸側---
$filename = filename;
#now = hidemaruhandle(0);
newfile;
insertfile $filename;
closehidemaru(hidemaruorder(#now));
gofiletop;

[ ]
RE:03324 [質問]鶴亀エディタの内容を秀丸で開く方法No.03325
秀まるお さん 01/05/16 16:57
 
 草稿に保存されるのがいやな場合には、適当なテンポラリファイルに保存する手も
あります。

   saveas "c:\~鶴亀temp.txt";
   run hidemarudir + "\\Hidemaru.exe c:\~鶴亀temp.txt";

[ ]
RE:03324 [質問]鶴亀エディタの内容を秀丸で開く方法No.03326
秀まるお さん 01/05/16 16:58
 
 "c:\~鶴亀temp.txt" は、"c:\\~鶴亀temp.txt"の間違いでした。

[ ]
RE:03324 [質問]鶴亀エディタの内容を秀丸で開く方法No.03331
プックン さん 01/05/17 16:38
 
>> SaveDraftして、MailFilePathでファイル名を取って、
> runで秀丸を開くっていうのでどうでしょう?
> ファイルを新規に作りたいのであれば、
> 秀丸のマクロを作って秀丸に起動パラメタを付けて呼び出すとか。

草稿フォルダに保存するという案は私には浮かびませんでした。
グッドアイデアだとおもい、さっそくトライしてみました。

>鶴亀のエディタで開いているファイル
説明不足でした。
この意味は、受信したメールを鶴亀メールで開いているときという意味です。
そのため SaveDraftできませんでした。(;_;)
受信メールを保存する必要がないから、受信したメールで"SaveDraft"
しても動作しないようになってるのかな。

ファイルの保存場所は、とりあえず秀まるおさんの教えていただいたように
しておいて試してみました。
とりあえず、期待の動作はできるようになりました。\(^o^)/
テンポラリに保存すれば、操作としては簡単にできたのに頭に浮かびませんでした。
ご指導ありがとうございました。

---鶴亀側---
//将来的には、草稿フォルダに保存するようにする
$filename = "d:\\temp\\~鶴亀temp.txt" ;
saveas $filename;

    $$file = "puku.ini" ;
    $$ini = hidemarudir + "\\" + $$file ;
    writeinistr $$ini, "Turukame", "Tmp_file", $filename ;

$param = "/b /h /xtkmnew.mac \"" ;
run hidemarudir + "\\Hidemaru.exe " + $param;

LEND:
    endmacro;

---秀丸側---
    $$file = "puku.ini" ;
    $$ini = hidemarudir + "\\" + $$file ;
    $filename = getinistr( $$ini, "Turukame", "Tmp_file" );

#now = hidemaruhandle(0);
newfile;
insertfile $filename;
closehidemaru(hidemaruorder(#now));
gofiletop;

//田楽DLLをつかって、テンポラリファイルを削除
loaddll hidemarudir+"\\DengakuDLL.dll";
#n = dllfunc("REMOVE",$filename);

LEND:
    freedll;
    endmacro;


[ ]
RE:03331 [質問]鶴亀エディタの内容を秀丸で開く方法No.03332
ひろ さん 01/05/17 18:50
 
 プックンさん今日は、ひろです。
> 草稿フォルダに保存するという案は私には浮かびませんでした。
 草稿フォルダに保存すると、そのメールを実際には送らない場合削除する
必要があります。もっと単純に saveas を使った方が簡単ではないでしょう
か?

[ ]