Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: どなたか Visio 用の Filter をテストして戴けないでしょ



藤山です

足立様にテストして戴き、感謝感激です。

さて、以下の問題ですが、当初テストしていた際に何度か発生しました
>上記の処理後、PCをshutdownしてもうまく落ちないので、タスクマネージャにてチェ
>ックしたところ、visio32.exeが居座っている模様。
>何回かファイルを変えたりして試しても、同じ。
>これをタスクマネージャで殺せばshutdown出来た。
状態としては、インデックスの際に何らかのメッセージがでる、
*.VSDのファイルがあると、この現象が発生しました。

また以下の現象もこれに関連していて、
>処理後、Visioを手動で起動してみると、リカバリ処理が走る。(リカバリとウインド
>ウ上部に表示されている。)その後、保存を拒否して再度Visioを起動すると問題なし。
>どうやら、80個のファイルを読み込んだとき、処理に失敗したと思われるファイルを
>リカバリしようとした様子。リカバリとは何かについては未調査。
メッセージを表示してインデックスが止まった際、Visio32.exeが
起動しっぱなしになるようで、これでvisio32.exeが残ります。
(場合によっては複数のvisio32が動いている)
結局は、ファイルをvisioで開いている状態になっているようで、
タスクマネージャで停止すると、visioファイルが開いた状態で
終了してしまいます。
リカバリ処理は、自動バックアップをする様に設定していると、
開いた状態のファイルを復旧する機能らしく(Visio開発者リファレンス参照)
今、最も効果的にこれを防ぐ手は、インデックスを止めない事と
思っています。

インデックスを止めない方法としては、メッセージを表示させなければ、
出来そうなのですが、AlertResponseで予めキャンセルを押すよう
指定している為、キャンセルのないメッセージには通用しません。
ほぼ確実にOKはあるので、OKを指定する手もあるでしょうが、
もし、保存しますか?と聞かれているのに、OKという事になって
しまうので、投稿時に書いていた通り怖くてできません。
(ちなみにAlertResponse=1;でOKになります。)

メールを戴いた後、リンク貼り付けしたものを作ってテストしてみましたが、
以下の現象は出ませんでした。(多分何か違うのでしょうね)
>一部、リンク貼り付けしてあったと思われるファイルで・・・・
上記の部分を踏まえ、以下の変更を考えてみしたが、問題のあった
ファイルで、インデックスを作成してみて戴けないでしょうか
但し、私の環境では成功してしまったので、危険を考えると、
どこかのフォルダーに*.vsdのファイルをコピーし、インデックス
作成をした方がいいと思います。(ファイルが壊れるかも・・)
olevisio.pl変更点
179行目あたり
    my $vdoc = $vsd->Documents->OpenEx({
        'FileName' => $cfile,
        'Flags'=> 11
        });
    die "Cannot open File $cfile" unless (defined $vdoc);

    #以下の4行を追加 自動バックアップをインデックス中OFFにする
    my $autrecov = $vdoc->{AutoRecover};
    if ($autrecov) {
        $vdoc->{AutoRecover} = 0;
    }

204行目あたり
    undef $vpageno;
    undef $vpagcnt;

    #以下の3行を追加 インデックス後に設定を戻す
    if ($autrecov) {
        $vdoc->{AutoRecover} = $autrecov;
    }
本来if文は不要のはずですが、不安なため入れています。