Namazu-win32-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
質問【olepowerpoint.plの改善点について】
- From: "Hideyuki Yamashita" <h-yama@xxxxxxxxxxxxx>
- Date: Tue, 27 Jan 2004 03:13:27 +0900
- X-ml-name: namazu-win32-users-ja
- X-mail-count: 01996
はじめまして。
山下と申します。
宜しくお願いします。
以下の環境でnamazuのフィルタを
動作させようと考えているのですが
olepowerpoint.pl内でスクリプトがフリーズしているように
見えます。
過去のログ等拝見しますと、
無事動作されているようなので、どうにも困り果てています。
namazuのフィルタに関しては
WindowsXP(あるいはOfficeXP)では動作しない等条件が存在するのでしょうか?
どなたかご存知の方いらっしゃいましたら、
お知恵を拝借したいと考えております。
[動作環境]
・Windows XP Professional SP1
・Microsoft Office XP Professional
・Active Perl v5.8.1
[実行しようとしていること]
・PowerPointファイルからのテキストの抽出
・olepowerpoint.plのRead
[olepowerpoint.plの起動方法]
・VC++のプログラム内から、CreateProcessでPerl モジュールを起動しフィルタとしてolepowerpoint.plを指定
[発生状況]
$ppt->{Visible} = 1;と書き換えると100%動作する
$ppt->{Visible} = 0;のままだとほぼ100%動作が固まる(ようにみえる)
場所としては、$ppt->{Visible} = 0;の部分で処理がとまっている。
(PowerPointオブジェクトからの応答がなくなる)ように見えています。
以上です.
----------------------------------------------------------------------------------
竹迫です。
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