CDOSYSを使ってMHTML形式(Multipart HTML。よーするにメールのMultipart MIMEと同じ)で単一のファイルとして保存しておく、つーのはけっこう使っている人も多いようで。
いちいちIEで「名前をつけて保存」つーのは芸が無いので、一気にやりたい、というのは天然自然の要求であろう。 俺も今(笑)、複数のページを保存しときたいという要求があったんで、これで保存しときゃいいかと、ちょっとスクリプトを書いてみた。 URL = "http://www.google.com/" いや、実際はもうちょっと綺麗に(定数のハードコードなんかさすがにやらないよ)書いてるが、概略こんな感じで。DiskFile = "test.mht" Set CDO = CreateObject("CDO.Message") CDO.CreateMHTMLBody URL, 0,"","" CDO.GetStream.SaveToFile DiskFile, 2 Set CDO = Nothing CDOのCreateMHTMLBodyで取得してそのままSaveToFile…という方法なのだが、簡単に終わってしめしめ…と思ったら落とし穴があった。 接続先URLによってエラーが出るのである。 CDO.Message.1: インターフェイスが登録されていませんwww.msn.comは取れるけどwww.google.comは取れないとか、ヘンなエラーの出方だ。 ?と思ってちょっとググって見たら、回答を見つけているひとがいた。JasonJoh's [MSFT] WebLog なるほど、煎じ詰めるとCDOが下請けに使ってるURLMON.DLLとの関係がアレなんで、http1.1の圧縮使っているページではエラーが出ると。 単純にはIEの設定でhttp1.1を切れ、と。 う~ん。CDO Configのパラメータを見ると、プロトコルバージョンを明示できるようなパラメータはないようなので、スクリプトからだと簡単には操作できそうも無いなぁ。 俺はとりあえずIEの設定を変えちゃって用は済ませたが、マジメに実装するのならJasonJoh氏がおっしゃっているようにInternetSetOptionを上書きするような何かを用意する必要がありそうだ。 ちなみにWinXP SP2で、CDOSYS.DLLが6.2.4.0,URLMON.DLLが6.0.2900.3268という環境。
by SIGNAL-9
| 2008-02-19 13:02
| TIPSとかKludgeとか
|
カテゴリ
全体 一般の話題 奇妙な論理 奇談・異聞 秋葉原 研究(笑) 町歩き 古い話 東電災害 電算機関係の話題 情報保護・セキュリティ 読んだり見たり TIPSとかKludgeとか 拙作ソフトウェア 未分類 最新の記事
記事ランキング
以前の記事
最新のトラックバック
その他のジャンル
ブログジャンル
画像一覧
|
ファン申請 |
||