要望をいろいろと2No.41277
nito3 さん 11/08/24 18:20
 
またまた要望を書きます。
ご検討ください。

(1)
エディタのウィンドウ切替に、setactivehidemaruを使ってますが、
エディタとメールエディタの行き来もできるようになりませんか?
ローカルのファイルを見ながら、メールを書く事があるので、
キーボードだけで行き来がしたいです。
ctrl+TABすればいいのでしょうけど、エディタ環境の中のキー操作だけで行き来が希
望です。
エディタのタブの1つになれば便利ですが、贅沢は言いません。

また、エディタのウィンドウ一覧にもメールエディタが表示されればうれしいです。
例えば「メールエディタ:新規1」とか「メールエディタ:件名or日付」みたいな表
示で。

(2)
メールエディタで、本文上でカーソルを上に移動させたとき、本文エリア上部で
止まるにはどうしたらいいのでしょうか?
今だとヘッダーエリアまでカーソルが進んでしまいます。
希望としては、本文上のカーソルは本文エリア上のみで、
ヘッダー上のカーソルはヘッダーエリア上のみで移動し、
それぞれの行き来は別のキー操作またはマウスでやりたいと思ってます。

(3)
メール内容表示部分において、下記ようなマクロを":","]"キーに割り当てて使って
ますが、
「検索一覧」や「このメールのスレッド」でも使えるようにはならないでしょうか?
#browsemode = browsemode;
if(#browsemode) browsemodeswitch;
goscreenend;
moveto 0, y + 2;
if(#browsemode) browsemodeswitch;


[ ]
RE:41277 要望をいろいろと2No.41278
秀まるお2 さん 11/08/24 21:07
 
> エディタのウィンドウ切替に、setactivehidemaruを使ってますが、
> エディタとメールエディタの行き来もできるようになりませんか?

 実はものすごーく昔に同じご要望がありまして、それに対応する用の、
NextHideTuru/PrevHideTuru関数ってのが用意されてます。

 それを使うマクロのサンプルです。

    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $s = getregstr( "TuruKameDir" );
    closereg;
    loaddll $s + "tkinfo.dll";
    #n = dllfunc("NextHideTuru");
    freedll;


 NextHideTuruの所をPrevHideTuruにすると逆(Ctrl+Shift+Tab相当)になりま
す。

> また、エディタのウィンドウ一覧にもメールエディタが表示されればうれしいです。

 これは現状出来ませんが、しいてtkinfo.dllに関数追加して、マクロで一覧を
出すということなら可能ではあります。

 現状のウィンドウ一覧に出すのは無理になります。

> メールエディタで、本文上でカーソルを上に移動させたとき、本文エリア上部で
> 止まるにはどうしたらいいのでしょうか?
> 今だとヘッダーエリアまでカーソルが進んでしまいます。

   if( y != 0 ) up;

 とすればいいかと思います。それを上矢印キーに割り当てるとか。メール本文
からヘッダに移動するにはCtrl+上矢印キーを使うとか。

> (3)
> メール内容表示部分において、下記ようなマクロを":","]"キーに割り当てて使って
> ますが、
> 「検索一覧」や「このメールのスレッド」でも使えるようにはならないでしょうか?

 これは難しいです。

 メール一覧は基本的にはリストボックスなので、リストボックスをうまく
コントロールするようなDLLを作って、それをマクロからdllfuncで呼び出して処
理させるって作戦はありかと思いますが、フォーカスのコントロールとかもある
のでうまくいくかどうかはやってみないと分からないです。

 それか、リストボックスのコントロールをする用とか、メール一覧の
ウィンドウハンドルを取得するとか、そういう関係の関数を大量に追加するとか
すればマクロでもコントロール出来るでしょうけど、気の長い話になります。

 現状では無理と思っていただくしか無いです。

[ ]
RE:41278 要望をいろいろと2No.41279
nito3 さん 11/08/24 23:26
 
>> エディタのウィンドウ切替に、setactivehidemaruを使ってますが、
>> エディタとメールエディタの行き来もできるようになりませんか?
> 実はものすごーく昔に同じご要望がありまして、それに対応する用の、
>NextHideTuru/PrevHideTuru関数ってのが用意されてます。
> それを使うマクロのサンプルです。

ありがとうございます。
使ってみます。


>> また、エディタのウィンドウ一覧にもメールエディタが表示されればうれしいです。
>
> これは現状出来ませんが、しいてtkinfo.dllに関数追加して、マクロで一覧を
>出すということなら可能ではあります。

気長にお待ちします。


>> メールエディタで、本文上でカーソルを上に移動させたとき、本文エリア上部で
>> 止まるにはどうしたらいいのでしょうか?
>> 今だとヘッダーエリアまでカーソルが進んでしまいます。
>   if( y != 0 ) up;
> とすればいいかと思います。それを上矢印キーに割り当てるとか。メール本文
>からヘッダに移動するにはCtrl+上矢印キーを使うとか。

ありがとうございます。
やってみます。

>> (3)
>> メール内容表示部分において、下記ようなマクロを":","]"キーに割り当てて使って
>> ますが、
>> 「検索一覧」や「このメールのスレッド」でも使えるようにはならないでしょうか?
>
> これは難しいです。
>
> メール一覧は基本的にはリストボックスなので、リストボックスをうまく
>コントロールするようなDLLを作って、それをマクロからdllfuncで呼び出して処
>理させるって作戦はありかと思いますが、フォーカスのコントロールとかもある
>のでうまくいくかどうかはやってみないと分からないです。
>
> それか、リストボックスのコントロールをする用とか、メール一覧の
>ウィンドウハンドルを取得するとか、そういう関係の関数を大量に追加するとか
>すればマクロでもコントロール出来るでしょうけど、気の長い話になります。
>
> 現状では無理と思っていただくしか無いです。

これも気長にお待ちします。


[ ]
RE:41279 要望をいろいろと2No.41281
nito3 さん 11/08/25 14:38
 
>>> エディタのウィンドウ切替に、setactivehidemaruを使ってますが、
>>> エディタとメールエディタの行き来もできるようになりませんか?
>> 実はものすごーく昔に同じご要望がありまして、それに対応する用の、
>>NextHideTuru/PrevHideTuru関数ってのが用意されてます。
>> それを使うマクロのサンプルです。
>
>ありがとうございます。
>使ってみます。

使ってみました。
当方秀丸エディタも秀丸メールもHmRegIni.dllで運用しているので、
秀丸エディタ上で動作させたとき、秀丸メールのディレクトリが
見つからずtkinfo.dllがロードできない感じで、エラーになりました。
まぁtkinfo.dllをエディタのディレクトリにコピーして
動作しましたが、他にスマートな方法はありますでしょうか?

[ ]
RE:41281 要望をいろいろと2No.41283
秀まるお2 さん 11/08/25 15:30
 
 秀丸エディタを持ち出しキット配下で動かすと秀丸メールの存在は認識出来な
いので、現状では秀丸メールのインストール場所を特定することは不可能だと思
います。

 なので、tkinfo.dllを秀丸エディタのプログラム用フォルダにコピーして使う、
というやり方くらいしか無いような気がします。

[ ]
RE:41277 要望をいろいろと2No.41316
秀まるお2 さん 11/08/31 11:48
 
 今さらのコメントですみませんが、次のβ版にて以下のマクロを使うことが出
来るようになりまして、それによって、

> メール内容表示部分において、下記ようなマクロを":","]"キーに割り当てて使って
> ますが、
> 「検索一覧」や「このメールのスレッド」でも使えるようにはならないでしょうか?

 の件が実現出来るようになります。

 追加した関数は多数あります。

 TitleListWnd
 GrepListWnd
 Bypass_GetClientSize
 SimulateKeyStroke2

 等で、それらを駆使してリストボックスをコントロールする形になります。

---------------マクロの例-----------------------------------
    loaddll "tkinfo.dll";
    if( dllfunc("IsHidemaruMailMain" ) ) {
        #wnd = dllfunc("TitleListWnd");
    } else if( dllfunc("IsHidemaruMailGrep" ) ) {
        #wnd = dllfunc("GrepListWnd");
    }
    if( #wnd == 0 ) {
        message "エラー1";
        endmacro;
    }
    #topindex = sendmessage( #wnd, 0x018E, 0, 0 );
    #caretindex = sendmessage( #wnd, 0x019F, 0, 0 );
    #itemcount = sendmessage( #wnd, 0x018B, 0, 0 );
    #cywindow = dllfunc("Bypass_GetClientSize", #wnd );
    #cywindow = #cywindow / 0x10000;
    #itemheight = sendmessage( #wnd, 0x01A1, 0, 0 );
    if( #itemheight == 0 ) {
        message "エラー2";
        endmacro;
    }
    #cy = #cywindow / #itemheight;
    #topindexmax = #itemcount - #cy;
    if( #topindex >= #topindexmax ) {
        #n = dllfunc("SimulateKeyStroke2", #wnd, 0x28, 0, 0, 0 );
        #n = dllfunc("SimulateKeyStroke2", #wnd, 0x28, 0, 0, 0 );
        endmacro;
    }
    #topindexwant = #topindex + 2;
    if( #topindexwant > #topindexmax ) {
        #topindexwant = #topindexmax;
    }
    if( #caretindex < #topindex ) {
        #n = sendmessage( #wnd, 0x0186, #topindex, 0 );
    }
    #count = 0;
    while( #topindex < #topindexwant && #count <= #cy + 2 ) {
        #n = dllfunc("SimulateKeyStroke2", #wnd, 0x28, 0, 0, 0 );
        #topindex = sendmessage( #wnd, 0x018E, 0, 0 );
        #count = #count + 1;
    }
    endmacro;





//#define VK_DOWN           0x28


//#define LB_ADDSTRING            0x0180
//#define LB_INSERTSTRING         0x0181
//#define LB_DELETESTRING         0x0182
//#define LB_SELITEMRANGEEX       0x0183
//#define LB_RESETCONTENT         0x0184
//#define LB_SETSEL               0x0185
//#define LB_SETCURSEL            0x0186
//#define LB_GETSEL               0x0187
//#define LB_GETCURSEL            0x0188
//#define LB_GETTEXT              0x0189
//#define LB_GETTEXTLEN           0x018A
//#define LB_GETCOUNT             0x018B
//#define LB_SELECTSTRING         0x018C
//#define LB_DIR                  0x018D
//#define LB_GETTOPINDEX          0x018E
//#define LB_FINDSTRING           0x018F
//#define LB_GETSELCOUNT          0x0190
//#define LB_GETSELITEMS          0x0191
//#define LB_SETTABSTOPS          0x0192
//#define LB_GETHORIZONTALEXTENT  0x0193
//#define LB_SETHORIZONTALEXTENT  0x0194
//#define LB_SETCOLUMNWIDTH       0x0195
//#define LB_ADDFILE              0x0196
//#define LB_SETTOPINDEX          0x0197
//#define LB_GETITEMRECT          0x0198
//#define LB_GETITEMDATA          0x0199
//#define LB_SETITEMDATA          0x019A
//#define LB_SELITEMRANGE         0x019B
//#define LB_SETANCHORINDEX       0x019C
//#define LB_GETANCHORINDEX       0x019D
//#define LB_SETCARETINDEX        0x019E
//#define LB_GETCARETINDEX        0x019F
//#define LB_SETITEMHEIGHT        0x01A0
//#define LB_GETITEMHEIGHT        0x01A1
//#define LB_FINDSTRINGEXACT      0x01A2
//#define LB_SETLOCALE            0x01A5
//#define LB_GETLOCALE            0x01A6
//#define LB_SETCOUNT             0x01A7

[ ]
RE:41316 要望をいろいろと2No.41322
nito3 さん 11/09/01 06:20
 
> 今さらのコメントですみませんが、次のβ版にて以下のマクロを使うことが出
>来るようになりまして、それによって、
snip
> 追加した関数は多数あります。
>
> TitleListWnd
> GrepListWnd
> Bypass_GetClientSize
> SimulateKeyStroke2
>
> 等で、それらを駆使してリストボックスをコントロールする形になります。

対応ありがとうございました。
サンプルマクロを勉強してみます。

[ ]
RE:41279 要望をいろいろと2No.41413
nito3 さん 11/09/08 09:28
 
>>> メールエディタで、本文上でカーソルを上に移動させたとき、本文エリア上部で
>>> 止まるにはどうしたらいいのでしょうか?
>>> 今だとヘッダーエリアまでカーソルが進んでしまいます。
>>   if( y != 0 ) up;
>> とすればいいかと思います。それを上矢印キーに割り当てるとか。メール本文
>>からヘッダに移動するにはCtrl+上矢印キーを使うとか。
>
>ありがとうございます。
>やってみます。

カーソル移動はこれでもいいんですが、
スクロール時や画面上部へジャンプなど
いろいろ関わってきているようなので、
秀丸メール本体側(エディタ側?)でのオプションか何かで
何とかなりませんでしょうか?
ご検討よろしくお願いします。

[ ]
RE:41413 要望をいろいろと2No.41414
秀まるお2 さん 11/09/08 10:18
 
 カーソル位置をメール本文先頭よりも上に移動出来ないようにしてしまうと、
例えばヘッダ行数が非常に多い場合にスクロールダウンさせてヘッダの先頭を表
示させることが出来なくなってしまうと思います。

 なので、オプション追加だとしてもちょっと無理があるような気がします。

 とりあえず、「マクロ・マクロ登録・エディタ側・自動起動」の「カーソル移
動後タイマー」の所に以下のマクロを登録しておけば、カーソルがヘッダの中に
入ってもメール本文の所に戻ってくれるようになります。

    if( !browsemode && readonly ) {
        loaddll "tkinfo.dll";
        if( dllfunc("IsHidemaruMailMain") ) {
            if( y < 0 ) {
                moveto 0, 0;
            }
        }
    }

 ただし、これだとヘッダ表示が「すべて」の場合にヘッダ全体が見えなくて不
便です。ヘッダ表示が「簡略表示」の場合に限ってやるとしたら、

    if( !browsemode && readonly ) {
        loaddll "tkinfo.dll";
        if( dllfunc("IsHidemaruMailMain") && dllfunc("HeaderView") == 1 ) {
            if( y < 0 ) {
                moveto 0, 0;
            }
        }
    }

 のようになります。

 こういう作戦でどうでょ?


[ ]
RE:41414 要望をいろいろと2No.41415
nito3 さん 11/09/09 00:16
 
> カーソル位置をメール本文先頭よりも上に移動出来ないようにしてしまうと、
>例えばヘッダ行数が非常に多い場合にスクロールダウンさせてヘッダの先頭を表
>示させることが出来なくなってしまうと思います。
>
> なので、オプション追加だとしてもちょっと無理があるような気がします。
>
> とりあえず、「マクロ・マクロ登録・エディタ側・自動起動」の「カーソル移
>動後タイマー」の所に以下のマクロを登録しておけば、カーソルがヘッダの中に
>入ってもメール本文の所に戻ってくれるようになります。

せっかく作っていただいたのですが、メール本文部分に必ず移動したいわけではない
です。
ヘッダー部分はヘッダー部分だけで移動したいし、メール本文部分でも
メール本文部分だけで移動したいんです。
シームレスに行き来できるのがちょっと使いにくいかな、と感じていました。
難しそうなので、あきらめます。

[ ]
RE:41415 要望をいろいろと2No.41487
nito3 さん 11/09/14 23:39
 
>ヘッダー部分はヘッダー部分だけで移動したいし、メール本文部分でも
>メール本文部分だけで移動したいんです。

ついでにお聞きしたいのですが、
メールエディタの「すべてを選択」を実行したとき、
本文部分だけ選択したいのですが、どうすればいいでしょうか?

[ ]
RE:41487 要望をいろいろと2No.41493
秀まるお2 さん 11/09/15 10:51
 
 「すべて選択」とは別に、編集メニューの中に「本文を選択」ってコマンドが
あります。それを使えばいいです。

[ ]
RE:41493 要望をいろいろと2No.41497
nito3 さん 11/09/15 13:50
 
> 「すべて選択」とは別に、編集メニューの中に「本文を選択」ってコマンドが
>あります。それを使えばいいです。

メニューにありましたね。
ありがとうございます。

[ ]
RE:41415 要望をいろいろと2No.41501
山紫水明 さん 11/09/15 21:08
 
 nito3さん,

>ヘッダー部分はヘッダー部分だけで移動したいし、メール本文部分でも
>メール本文部分だけで移動したいんです。
>シームレスに行き来できるのがちょっと使いにくいかな、と感じていました。

 次のマクロを同じ自動起動に登録したらどうでしょうか。

//-----------------------------------------------//
loaddll "tkinfo.dll";
if( dllfunc( "IsHidemaruMailMain") ) {
    if( dllfunc( "CurrentPane" ) != 2 ) endmacro;
}
if( y == -1 && iskeydown(37) ) right;//"←"
if( y == -1 && iskeydown(38) ) down; //"↑"
if( y == 0 && iskeydown(39) ) left;  //"→"
if( y == 0 && iskeydown(40) ) up;    // "↓"
endmacro;
//-----------------------------------------------//

                          山紫水明(ユーザー)
                          SANSHISUIMEI

[ ]
RE:41501 要望をいろいろと2No.41503
nito3 さん 11/09/15 23:43
 
>>ヘッダー部分はヘッダー部分だけで移動したいし、メール本文部分でも
>>メール本文部分だけで移動したいんです。
>>シームレスに行き来できるのがちょっと使いにくいかな、と感じていました。
>
> 次のマクロを同じ自動起動に登録したらどうでしょうか。

ありがとうございます。
試してみました。
キーを押しっぱなしにすると、たまにすり抜けてしまうようです。
時間を調整すればいいのかもしれませんが。

せっかく作っていただいたのに申し訳ございませんが、
秀まるお2 さんに、最初に教えていただいた方法で
慣れていきたいと思います。
ありがとうございました。

[ ]
RE:41503 要望をいろいろと2No.41504
山紫水明 さん 11/09/16 08:04
 
 nito3さん,

>キーを押しっぱなしにすると、たまにすり抜けてしまうようです。
>時間を調整すればいいのかもしれませんが。

 そうでしたか。私のところでは,時間は 0ms ですり抜けることはないのですが,
環境の違いがあるのかもしれません。
 なお,もはや不必要のことですが,マクロとしては,
if( y == 0  && iskeydown(39) ) left;  //"→"

if( y == 0 && x == 0 && iskeydown(39) ) left;  //"→"
とすべきところでした。

                          山紫水明
                          SANSHISUIMEI

[ ]