カテゴリー
Wiki内検索
*
最近更新したページ
最新コメント
win32/guitest by stunning seo guys
FrontPage by stunning seo guys
SWIG by awesome things!
Win32/Console by stunning seo guys
FrontPage by awesome things!
Win32SDK_ICM by stunning seo guys
Win32SDK_MM by check it out
Win32SDK_process by stunning seo guys
VisualuRuby by stunning seo guys

秀丸メールマクロヘルプ11

コマンド一覧

メール一覧枠関係





IsThreadView関数(TKInfo.dll)


 この関数は、現在のメール一覧枠での表示がスレッド表示か一覧表示かを返します。


返り値(数値型)


 スレッド表示の場合は1、一覧表示の場合は0を返します。



#IsThreadView = dllfunc("IsThreadView");





SetThreadView関数(TKInfo.dll)


 この関数は、現在のメール一覧枠のスレッド表示か一覧表示かを切り替えます。


パラメータ1


 スレッド表示にしたい場合は1、一覧表示にしたい場合は0を指定します。


返り値(数値型)


 選択に成功した場合は1、失敗した場合は0を返します。



#n = dllfunc("SetThreadView", 1);





SortMethod関数(TKInfo.dll)


 この関数は、現在のメール一覧枠の一覧のソート方法を返します。スレッド表示になっている場合でも一覧側のソート方法(内部的に持っている値)を返します。


返り値(数値型)


 ソート方法の値です。

アイコン
題名(Subject:)
FromまたはTo
日付(Date:)
送受信の日付
サイズ
追加ヘッダ(全般的な設定・メール一覧で指定した物)
予約(検索して一覧作成の場合用のフォルダ名でのソート用)
題名から[...]部分を除去してソート
題名から[...]と、さらにRe:部分も除去してソート
10メールアドレスの@以降部分を使ってソート
11色でソート

 上記の値に12を足した値は、逆方向のソートという意味になります。




#n = dllfunc("SortMethod");





SetSortMethod関数(TKInfo.dll)


 この関数は、メール一覧枠の一覧ページのソート方法を指定します。


パラメータ1


 ソート方法です。

アイコン
題名(Subject:)
FromまたはTo
日付(Date:)
送受信の日付
サイズ
追加ヘッダ(全般的な設定・メール一覧で指定した物)
予約(検索して一覧作成の場合用のフォルダ名でのソート用)
題名から[...]部分を除去してソート
題名から[...]と、さらにRe:部分も除去してソート
10メールアドレスの@以降部分を使ってソート
11色でソート

 上記の値に12を足した値は、逆方向のソートという意味になります。



返り値(数値型)


 選択に成功した場合は1、失敗した場合は0を返します。



#n = dllfunc("SetSortMethod", 0);





ViewArea関数(TKInfo.dll)


 この関数は、メール一覧枠の「範囲」の所の現在のモードを返します。


返り値(数値型)


 「範囲」のモードです。


0 全体
1最近の分
2未読分
3マークされたメール
4優先度:高のメール
5添付ファイル付きのメール
6〜13予約(V2.96時点でまだ使ってない)
14以上ユーザー様が作成したカスタム表示範囲。14が1番目。


#n = dllfunc("ViewArea");





SetViewArea関数(TKInfo.dll)


 この関数は、メール一覧枠の「範囲」を切り替えます。


パラメータ1


 範囲の値です。


0 全体
1最近の分
2未読分
3マークされたメール
4優先度:高のメール
5添付ファイル付きのメール
6〜13予約(V2.96時点でまだ使ってない)
14以上ユーザー様が作成したカスタム表示範囲。14が1番目。

返り値(数値型)


 選択に成功した場合は1、失敗した場合は0を返します。



#n = dllfunc("SetViewArea", 0);





MailCount関数(TKInfo.dll)


 この関数は、現在一覧に表示されているメールの個数を返します。フォルダ中のメール総数を得るにはMailCountAll関数を使います。


返り値(数値型)


 メールの個数です。



#n = dllfunc("MailCount");





MailCountAll関数(TKInfo.dll)


 この関数は、現在選択されているフォルダ中のメール個数を返します。


返り値(数値型)


 メールの個数です。



#n = dllfunc("MailCountAll");





MailIndex関数(TKInfo.dll)


 この関数は、現在のメール一覧枠の一覧側で、現在選択しているメールの先頭からの位置を返します。スレッド表示の場合はうまく動作しません。
 メールを複数選択している場合には、一覧中のカーソル「四角い枠」の場所を返します。


返り値(数値型)


 選択位置です。先頭が0です。
 何も選択されてない場合やスレッド表示の場合は-1を返します。



#n = dllfunc("MailIndex");





SetMailIndex関数(TKInfo.dll)


 この関数は、メール一覧枠の一覧側で、特定のメールを選択します。スレッド表示の場合はうまく動作しません。


パラメータ1


 メールの番号です。一番上が0、その下が1、…という具合の番号です。


返り値(数値型)


 選択に成功した場合は1、失敗した場合は0を返します。



#n = dllfunc("SetMailIndex", 0);





GetTitleListTopIndex, SetTitleListTopIndex関数(TKInfo.dll)


 GetTitleListTopIndex関数は、メール一覧上での、表示されているメールの中での一番上のメールの、一覧内での順序(0〜)を返します。パラメータはありません。

 SetTitleListTopIndex関数は、メール一覧上での一番上に表示するメールの、メール一覧内での順序を指定します。パラメータで番号を指定します。メール一覧に表示しているメール数よりも大きい番号を指定した場合や、そのメールを一番上に表示するとスクロールしすぎてしまう場合には、一番下のメールが見える限度までスクロールアップした表示となります。

パラメータ1(SetTitleListTopIndex)


 メール一覧上でのメールの番号です。一番上が0、その下が1、…という具合の番号です。


返り値(数値型)


 選択に成功した場合は1、失敗した場合は0を返します。


例(メール一覧を一番下にスクロールさせる例)


#n = dllfunc("SetTitleListTopIndex", 999999);


おまけ関数:GetTitleListHeight


 GetTitlteListHeight関数は、メール一覧ウィンドウの高さを返します。何通のメールを表示可能かの、行数を返します。
 切れが悪い行(上半分しか見えない行)も含めて行数を数えます。

 例: #n = dllfunc("GetTitleListHeight");





LockSelection, EnumSelection, UnlockSelection, SelectedMailCount関数(TKInfo.dll)


 これらの関数は、複数のメールを選択している時に、その選択されたメール1つ1つに対してマクロで処理するために使います。

 複数選択しているメールを1つ1つ選択してマクロ処理させるには、まずLockSelectionを呼んで、次にEnumSelection関数が0を返すまでループし、最後にUnlockSelectionを呼ぶという手順になります。EnumSelection関数を1回呼ぶたびに、複数選択していたメールを1つずつ選択していきます。


LockSelection関数


 LockSelection関数は、現在選択しているメールについての情報を取得し、次に呼ばれるEnumSelectionに備えます。
 LockSelection関数にはパラメータはありません。
 LockSelection関数の返り値は数値型で、選択しているメールの個数となります。0が返った場合はメールを何も選択していないことを意味し、1が返った場合は複数選択されてないことを意味します。


EnumSelection関数


 EnumSelection関数は、複数選択していたメール1つ1つを選択します。最初は一番上のメールを選択し、その次はその下のメール、…というように、上から下方向に選択していきます。
 EnumSelection関数には数値型のパラメータが1つあります。現在のバージョンではここには必ず1を指定してください。0を指定すると、選択する動作をせずに、値だけ返します。しかし、現状ではその返り値を有効利用することはできません。
 EnumSelection関数の返り値は数値型です。選択できるメールが無くなった場合は0を返します。選択しようとしたメールがメール一覧上に存在しなかった場合は-1を返します(普通そんなことはありえませんが、たとえばLockSelectionした後にSetViewAreaを呼ぶとそういうことがありえます)。

 選択に成功した場合は0でも-1でも無く、何らかの値を返します。この値は秀丸メールの内部に持っているメールについての情報の先頭アドレスですが、現在の所、直接利用することはできません。

 スレッド表示の場合、選択されたスレッドの中で折りたたまれた物はすべて展開されてしまいます。


UnlockSelection関数


 UnlockSelection関数は、LockSelection関数が取得した内部データを解放すると同時に、パラメータの指定によっては元の選択状態を復元しようと努力します。
 パラメータ1は数値型で、ここに0を指定すると単純に内部データの解放のみを行います。1を指定すると、元の選択状態を復元しようと努力します。たとえば複数選択していたメールの1つでも削除されている場合はパラメータ1に1を指定しても復元されませんが、メールが無くなってない場合は大抵うまく復元できるはずです。
 UnlockSelect関数の返り値は、パラメータ1に1を指定して選択状態の復元に成功した場合は1、そうでない場合は0を返します。

 UnlockSelection関数を呼ばずにマクロを終了しても、特に支障は無いはずです。でも念のために呼んでください。
 LockSelection関数が0を返した場合はUnlockSelectionを呼ばなくても全く支障ありません。


SelectedMailCount関数


 この関数は、現在選択されているメールの数を返します。


補足


 マクロの実行を少しでも速くしたい場合は、DisableDraw/EnableDraw関数を使ってください。
 LockSelectiionした時点で選択されていたメールをEnumSelectionとは別の方法で選択して削除または移動すると、後でEnumSelectionした時に誤動作する恐れがあります。
 LockSelectionしてEnumSelectionのループをしている最中は、LockSelectionで選択しているメール以外のメールについてのみ、マクロから改変/削除/移動などの操作をしても大丈夫なはずです。選択しているメールについて操作したい場合は、必ずEnumSelectionで選択させて動作させてください。

例(マーク状態を判定させる例)


loaddll "tkinfo.dll";
#count = dllfunc("SelectedMailCount");
if( #count == 0 ) {
    endmacro;
}
#n = dllfunc("LockSelection");
while(1) {
    #n = dllfunc("EnumSelection", 1);
    if( #n == 0 ) {
        break;
    }
    #n = dllfunc("SwitchMark");
}
#n = dllfunc("UnlockSelection", 1);


例(特定メールを削除する例)


loaddll "tkinfo.dll";
#count = dllfunc("SelectedMailCount");
if( #count == 0 ) {
    endmacro;
}
#n = dllfunc("LockSelection");
while(1) {
    #n = dllfunc("EnumSelection", 1);
    if( #n == 0 ) {
        break;
    }
    if( dllfuncstr("CurrentHeader", "Subject") == "削除せよ" ) {
        #n = dllfunc("Delete");
    }
}
#n = dllfunc("UnlockSelection", 0);





SelectAllMail関数(TKInfo.dll)


 この関数は、メール一覧に現在表示しているメールをすべて選択します。この関数は、秀丸メールのVersion4.59から追加されています。

 以前は、この「メールをすべて選択」に相当する動作は
  #n = sendmessage( hidemaruhandle(0), 0x0111, 40008, 0);

 みたいなやり方でやってもらってましたが、実はこの40008のコマンドは、メール内容枠がアクティブの時はメール内容のテキストを「すべて選択」する動作になってしまいます。なので、しいてこの40008番のコマンドを使ってメールをすべて選択するには、

    if( dllfunc("CurrentPane") >= 2 ) {
      #tmp = dllfunc("SelectPane", 1);
    }
    #n = sendmessage( hidemaruhandle(0), 0x0111, 40008, 0);

 のようにしないといけません。


返り値(数値型)


 返り値に意味はありません。




2006年05月17日(水) 02:44:22 Modified by aqualung




スマートフォン版で見る