findhidemaruが復元された特定のタブを見No.11734
かこん さん 06/12/12 21:18
 
デスクトップ復元のマクロを試している時にデバッグ出力を見ていて気づいたのです
が、restoredesktopでデスクトップ復元を行なった直後に一番左のタブのファイル名
でfindhidemaruを呼び出すと、見つけられなかった事を示す(-1)が帰ってくること
があります。また、さらにその見つけられなかったファイルに対してopenfileを実行
しても既に開かれているそのファイルのタブがアクティブにならないようです。さら
に興味深いことには、一度openfileを実行するとfindhidemaruが成功するようになり
ます。

例えば下のマクロを実行すると、一番左のタブのファイルを指定しているにもかかわ
らず、最初のfindhidemaruは失敗し、openfile後の次のfindhidemaruは成功します。

私の環境ですと70%位の再現率ですので、タイミング的なものかもしれません。

//----------
$f = "一番左のタブのファイル名";
restoredesktop;
if (findhidemaru($f) == -1)
{
    debuginfo "ファイルは見つかりませんでした。オープンします。" + "\x0a";
    openfile $f;
    if (findhidemaru($f) != -1)
    {
        debuginfo "ファイルは見つかりました。アクティベートします。" + "\x0a";
        setactivehidemaru findhidemaru($f);
    }
}

[ ]
RE:11734 findhidemaruが復元された特定のNo.11735
アルビレオ さん 06/12/12 21:52
 
ユーザーのアルビレオです。

>デスクトップ復元のマクロを試している時にデバッグ出力を見ていて気づいたのです
>が、restoredesktopでデスクトップ復元を行なった直後に一番左のタブのファイル名
>でfindhidemaruを呼び出すと、見つけられなかった事を示す(-1)が帰ってくること
>があります。

これが原因じゃないでしょうか?
・マクロヘルプより
> 自分自身はfindhidemaruの対象とはなりません。(自分自身は常に0番目です)


if ($f != filename && findhidemaru($f) == -1)

としてみてはどうでしょうか。

[ ]
RE:11735 findhidemaruが復元された特定のNo.11738
かこん さん 06/12/12 23:10
 
アルビレオさん、こんにちは。

>これが原因じゃないでしょうか?
>・マクロヘルプより
>> 自分自身はfindhidemaruの対象とはなりません。(自分自身は常に0番目です)

まさにご指摘の通りでした。どうやらrestoredesktopを呼び出すと、一番左に該当す
るファイルが最後に復帰されるためにか、帰ってきた直後だとfindhidemaruが(-1)を
返すようです。ご指摘ありがとうございました。

ただ、まだ動作的にはどうもおかしな動きをしているようですが、それに関しては別
のスレッドを立てようと思います。

[ ]