|
履歴を書き換えるタイプのマクロの方で、
− 複数選択して実行してもそのまま選択を維持するように。
− メモ内容をソートするように。
って修正をしてみたのですが、ちょっといまいちな感じになりました。
複数選択してる最中だと、「検索して一覧作成」のウィンドウが1回出てしま
います。現状この方法しか無いです。
やはり何か機能追加した方がいいかもしれません。ぼちぼち考えます。
------------------------------------------------------------------------
loaddll "tkinfo.dll";
#n = dllfunc("SetJapaneseCodePageMode", 1);
$originFindPack = dllfuncstr("GetFindPack");
#n = dllfunc("SetFindPack", "flag=memo, subfolder=0, inmail=0");
if( dllfunc("SelectedMailCount") > 1 ) {
goto Label_MultiSelectVersion;
}
#n = dllfunc("DisableDraw");
#originThreadView = dllfunc("IsThreadView");
if( #originThreadView ) {
#n = dllfunc("SetThreadView", 0);
}
#originIndex = dllfunc("MailIndex");
#n = dllfunc("SetMailIndex", 0);
#n = dllfunc("FindDownInclude");
while(1) {
if( #n == 0 ) {
break;
}
$memo = dllfuncstr("CurrentHeader", "X-Memo");
if( $memo != "" ) {
#i = 0;
while( 1 ) {
if( #i >= #memoCount ) {
$memoList[#memoCount] = $memo;
#memoCount = #memoCount + 1;
break;
}
if( $memo == $memoList[#i] ) {
break;
}
#i = #i + 1;
}
}
#n = dllfunc("FindDown");
if( #n == 0 ) {
break;
}
}
#n = dllfunc("SetMailIndex", #originIndex);
if( #originThreadView != 0 ) {
#n = dllfunc("SetThreadView", #originThreadView);
}
Label_Label_MultiSelectVersion_Return:
#n = dllfunc("SetFindPack", $originFindPack);
#n = dllfunc("EnableDraw");
if( #memoCount > 20 ) {
#memoCount = 20;
}
//ソートする
#x = 0;
while( #x < #memoCount - 1 ) {
#y = #x + 1;
while( #y < #memoCount ) {
if( $memoList[#x] > $memoList[#y] ) {
$temp = $memoList[#x];
$memoList[#x] = $memoList[#y];
$memoList[#y] = $temp;
}
#y = #y + 1;
}
#x = #x + 1;
}
#n = dllfunc("SaveConfig", 1);
openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
#i = 0;
while( #i < 20 ) {
$name = "NMemHist" + str(#i / 10) + str(#i % 10);
writeregstr $name, $memoList[#i];
#i = #i + 1;
}
closereg;
#n = dllfunc("EnvChangedDanger", 1);
#n = sendmessage( hidemaruhandle(0), 0x0111, 40084, 0);
endmacro;
//複数選択対応
Label_MultiSelectVersion:
#n = dllfunc("DoGrep2", "\\CurrentAccount", dllfunc("CurrentFolder"),
0);
#mainHandle = hidemaruhandle(0);
#grepHandle = dllfunc("GrepWnd");
#n = dllfunc("SetGrepWndTop");
#count = dllfunc("MailCount");
#mailIndex = 0;
#n = dllfunc("DisableDraw", 0);
disabledraw;
#n = dllfunc("SimulateKeyStroke", 0x24, 0, 0, 0);
while(#mailIndex < #count) {
$memo = dllfuncstr("CurrentHeader", "X-Memo");
if( $memo != "" ) {
#i = 0;
while( 1 ) {
if( #i >= #memoCount ) {
$memoList[#memoCount] = $memo;
#memoCount = #memoCount + 1;
break;
}
if( $memo == $memoList[#i] ) {
break;
}
#i = #i + 1;
}
}
#mailIndex = #mailIndex + 1;
#n = dllfunc("NextMail");
}
setactivehidemaru #mainHandle;
#n = dllfunc("CloseGrepWnd");
goto Label_Label_MultiSelectVersion_Return;
|
|