Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
olepowerpoint.pl の改善点について
- From: "Yoshinori.TAKESAKO" <takesako@xxxxxxxxx>
- Date: Mon, 15 Jan 2001 00:55:41 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 00566
竹迫です。
Subject: [namazu-win32-users-ja] Re: Namazu 2.0.5 for Win32パッチのまとめ
From: baba@xxxxxxxxxxxxxxxxxxxxxx <baba@xxxxxxxxxxxxxxxxxxxxxx> said:
> > > > ・PowerPoint97でテストした結果、WordやExcelのようにPowerPointを
> > > > 非表示のまま処理することはできない。必ず表示しないとOLEオート
> > > > メーション処理に失敗する。多分PowerPointの仕様でしょう。
>
>これなんですが、少し変則的ですが無理やり解決させました。
>
>まず、$ppt->{Presentations}->Open() で 'WithWindow' を 0 にセット
>してやると、PowerPoint の画面は出てきますが中身は表示しないで済む
>ようになります。で、こうした上で $ppt->{Visible} = 1; の行を0 にす
>ると PowerPoint の画面が出なくなります。
そんな方法があったんですか!これは凄い...(^^;
早速こちらでも試してみたところ PowerPoint の画面は出てこずに
インデックスの作成ができました。これはかなり嬉しいことです。
>ですが、このままだと、
>
> Win32::OLE(0.1402) error 0x80020009: "例外が発生しました。"
> in PROPERTYPUT "Visible" at /namazu/share/namazu/filter/win32/olepowerpoint.pl line 159
> OLE exception from "Microsoft PowerPoint 8.0":
>
> Application.Visible : 無効な要求です。アプリケーション
> ウィンドウを非表示に設定することはできません。
>
>の例外が起きます。ところが、この例外メッセージが出てもインデックス
>は正常に作成されるようです。ということで、この例外メッセージを nul
>に送って無視してやれば、うまくインデックスできるようになります。
ちょっと荒業ではありますが、$Win32::OLE::Warn = 0; という一行を
書き加えると例外メッセージの表示を抑制することができるみたいです。
以下は Win32::OLE のドキュメントの一部です。
| $Win32::OLE::Warn
|
| This variable determines the behavior of the Win32::OLE module when
| an error happens. Valid values are:
|
| 0 Ignore error, return undef
| 1 Carp::carp if $^W is set (-w option)
| 2 always Carp::carp
| 3 Carp::croak
>いちおう、これらの変更は commit しておきました。といっても、mknmz
>とかは試せないとおもうんですけど(コンパイルする環境があれば別です
>が)、フィルタだけでも、
>
> http://cvs.namazu.org/namazu/filter/win32/
>
>からお試し下さい(もちろん anonymous CVS からの取得でも可)。すみま
>せんが、再度 Word,Excel,PPT 全部で確認していただけないでしょうか。
これで OLEフィルタに関しては、多くの問題が解決されたみたいですね。
あとは、みなさんの動作報告を待つだけかな? 試された方は、
是非メーリングリストにご報告していただけると助かります。(^^;
以上、よろしくお願いいたします。
--
広島市立大学 情報科学部 情報機械システム工学科
竹迫 良範 <takesako@xxxxxxxxx>