|
いろいろとご検討頂きありがとうございました。
プログラミングは全くの素人なので
的外れな書き方をしていたかもしれませんが、
「履歴が残ってしまう」
ということではなくて、
「そもそもクリップボードが機能しなくなる
(クリップボードへの書き込み自体が抑制されてしまうようだ)」
ということなのです。
どこまで具体的に書けばいいのか分かりませんので、
大変冗長になるかもしれませんが、具体的に書きます。
以下が、件のレベルダウンにより機能しなくなったマクロです。
こちらは、機能するようになりました。
■■■■■■■■以下マクロ引用■■■■■■■■■■■■■■■■■
//以下クリップボード履歴対策
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
#cliphistflag = getregnum( "ClipHistFlag" );
if( #cliphistflag ) { //クリップボードの履歴をとる
writeregnum "ClipHistFlag", #cliphistflag & 0xfff0;
envchanged;
}
//以上クリップボード履歴対策 末尾にもあり
loaddll "TKInfo.dll";
#i = 0;//カウンタ
setclipboard "";//クリップボードを空にします
#n = dllfunc("LockSelection");
while( 1 ) {
#n = dllfunc("EnumSelection", 1);//選択メールについて
if( #n == 0 ) break;//メール選択されてないときは終わり
#i = #i + 1;//カウンタを増やす
// 差出人情報取得
$s = dllfuncstr("CurrentHeader", "From");
$s = dllfuncstr( "FindBook2", $s);
$s = dllfuncstr( "LeftStr", $s, 2);
//
#n = dllfunc( "SelectPane", 2);//内容表示をアクティヴにし
gofiletop;//ファイルの先頭から
beginsel;//範囲選択を開始して
searchdown2 "--"; //--までの文字列を
if (result == 0) gofileend; // --が無い場合は最終行までを
addclipboard "\n■" + str(#i) + "■ 【" + $s + "】\n";
appendcopy;//取得したメールの内容をクリップボードに追加
#n = dllfunc( "SetMainWndTop" );
#n = dllfunc( "SelectPane", 1);
}
#n = dllfunc("UnlockSelection", 0);
newfile;//新しいメールを開いて
#n = dllfunc("SwitchHeaderView", 0);
selectall;//本文を選択して
delete;//一旦削除して空にしてから
//以下クリップボード履歴対策
if( #cliphistflag ) {
writeregnum "ClipHistFlag", #cliphistflag;
envchanged;
}
closereg;
//以上クリップボード履歴対策
poppaste;//クリップボードに取得したデータを本文にペースト
replaceallfast "^>.*\\n", "", regular;//「>」で始まる行を削除
endmacro;
■■■■■■■■以上マクロ引用■■■■■■■■■■■■■■■■■
このマクロの欠点は、レジストリをいじることで、
ちょっと怖いです。そこで、
■■■■■■■■以下マクロ引用■■■■■■■■■■■■■■■■■
//以下クリップボード履歴対策
disablehistory 0x0040;
//以上クリップボード履歴対策 末尾にはなし
loaddll "TKInfo.dll";
#i = 0;//カウンタ
setclipboard "";//クリップボードを空にします
#n = dllfunc("LockSelection");
while( 1 ) {
#n = dllfunc("EnumSelection", 1);//選択メールについて
if( #n == 0 ) break;//メール選択されてないときは終わり
#i = #i + 1;//カウンタを増やす
// 差出人情報取得
$s = dllfuncstr("CurrentHeader", "From");
$s = dllfuncstr( "FindBook2", $s);
$s = dllfuncstr( "LeftStr", $s, 2);
//
#n = dllfunc( "SelectPane", 2);//内容表示をアクティヴにし
gofiletop;//ファイルの先頭から
beginsel;//範囲選択を開始して
searchdown2 "--"; //--までの文字列を
if (result == 0) gofileend; // --が無い場合は最終行までを
addclipboard "\n■" + str(#i) + "■ 【" + $s + "】\n";
appendcopy;//取得したメールの内容をクリップボードに追加
#n = dllfunc( "SetMainWndTop" );
#n = dllfunc( "SelectPane", 1);
}
#n = dllfunc("UnlockSelection", 0);
newfile;//新しいメールを開いて
#n = dllfunc("SwitchHeaderView", 0);
selectall;//本文を選択して
delete;//一旦削除して空にしてから
poppaste;//クリップボードに取得したデータを本文にペースト
replaceallfast "^>.*\\n", "", regular;//「>」で始まる行を削除
endmacro;
■■■■■■■■以上マクロ引用■■■■■■■■■■■■■■■■■
という風にしたら、上手くいくかと思ったのですが、
全く機能せず。
元々クリップボードに入っていたデータが
poppaste;
されるという始末です(なので、最後の履歴が消えてしまう)。
以上から、素人判断で
setclipboard "";
addclipboard "";
appendcopy;
の機能が停止しているようだ、と書かせて頂きました。
問題の箇所を特定するために、具体的に確認すべきやり方があれば、
ご指摘ください。よろしくご指導のほどお願いします。
|
|