[リストへもどる]
一括表示

投稿時間:2003/03/29(Sat) 21:31
投稿者名:しんじ
Eメール:
URL :
タイトル:
VBでインターネット一時ファイルの内容を取得したい。
はじめまして。
業務用のAPLを現在作成を行っているのですが、インターネット一時ファイルの処理が出来なく非常に困っております。お手数お掛け致しますが教えて下さい。
作成はVB6.0SP5のProで行っております。

CoTaskMemFree関数、SHGetPathFromIDList関数、SHGetSpecialFolderLocation関数で各LOCALPCの
一時ファイルの場所までは検索できるようになったのですが、Temporary Internet FilesのファイルをDir
関数で調べても「ファイルが見つかりません」となってしまいます。
当初実験の為、他のフォルダ(c:\)にファイルを置いて、IEオブジェクトの内容からクリップボード経由で情報は取得できていたのですが、
本来使用予定のTemporary Internet Filesを処理しようとしたとたん行き詰まりました。
Webで色々調べた結果Temporary Internet Filesは一時キャッシュのポインタだという事が分かりましたが
それ以降どのようにして対処して良いのか全く分かりません。
Temporary Internet Filesの下の階層フォルダにあるファイルが本物のファイルのようなのですが
意味不明な名前の命名規則などもあり、また、使用するユーザーのIEのVersionも違う事からどのようにファイルのパスを追って行けば良いのかも全く分かりません。
情報を取得しようとしているファイルはHTML形式のファイルです。
テキスト部分だけ取得できれば問題はありません。
また、Temporary Internet Filesの下の階層フォルダの名前に関しては、OS、IEのバージョンなどによっても左右されるのでしょうか?
キャッシュファイルを触るのは初めてで初心者です。
大変お手数お掛け致しますがご教授頂きますよう宜しくお願い申し上げます。

投稿時間:2003/03/29(Sat) 21:56
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: VBでインターネット一時ファイルの内容を取得したい。
ここの逆引きヘルプの インターネット一時ファイルの削除 はご覧になられたのでしょうか?
まだでしたら一度見て下さい。

投稿時間:2003/03/29(Sat) 22:36
投稿者名:しんじ
Eメール:
URL :
タイトル:
ご返答ありがとう御座います。
花ちゃんさん。
ご返答ありがとう御座います。
ご教授頂きました「インターネット一時ファイルの削除」の一番下のURL
(http://www.mvps.org/vbnet/index.html?code/internet/deleteurlcache.htm)で紹介されていました。
それもTOPページに........
タイトルだけ見ていて確認不足でした。申し訳御座いません。
私は恥ずかしながら英語が全然駄目でして(笑)
少々苦労するかとは思いますが、まずは自分でコードの方から辿って勉強してみようと思います。
内容に関して不明な点があればまたお問い合わせさせて頂くかとは思いますが、その際はどうぞ宜しく
お願い申し上げます。

投稿時間:2003/03/30(Sun) 18:21
投稿者名:しんじ
Eメール:
URL :
タイトル:
再度不明な点がありました。
WININETでURLでキャッシュからインターネットアドレスは取得できました。
本当にありがとう御座います。
しかし、現在行いたい事は、キャッシュファイルからLOCALのフルパスを調べないと
実現しようとしている機能の提供が出来無い事が判明致しました。
インターネット一時ファイルの特定の1ファイルだけを検索する事は可能でしょうか?
特定できるAPIなどがあれば教えて下さい。
また、検索した一時ファイルより
1、インターネットアドレスの取得 → こちらは解決いたしました。
2、LOCALアドレスの取得
  → file:///C:/WINDOWS/Temporary%20Internet%20Files/Content.IE5/9SLTDY0K/all_indexCriant%5B1%5D.htm#2003030403442001

2のようなアドレスを取得する事は可能でしょうか?
お手数お掛け致しますがご教授の程よろしくお願い致します。

投稿時間:2003/03/30(Sun) 18:36
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 再度不明な点がありました。
> 2のようなアドレスを取得する事は可能でしょうか?

2、LOCALアドレスの取得 は何を指しているのでしょうか?
キャッシュフォルダーにはインターネットアドレスしかないのでは?
ポインターは取得できなかったですよね!

最終的に何がしたいのでしょうか?
指定の一時ファイルを削除するとか?
それによっては代替案があるかも知れません。

投稿時間:2003/03/30(Sun) 19:24
投稿者名:しんじ
Eメール:
URL :
タイトル:
Re^2: 再度不明な点がありました。
説明不足で申し訳御座いません。
やりたい事というのはある特定の一つのキャッシュファイルから、LOCALアドレスを取得して
LOCALのキャッシュファイルをIEで開いて情報取得が行いたいのです。
相手APLの仕様で特定のキャッシュファイルを上書きしているので、この仕様を利用して最新の情報取得を
行おうと試みています。
ちなみにキャッシュフォルダの削除のルーチンは正常に動作しました。

何故LOCALアドレスが取得できるのか?
と思ったきっかけはキャッシュファイルをIEにドラッグドロップすると、上記質問内容のようなアドレスで開いてくるのでキャッシュからポインタは取得出来るのではないのか?
と素人考えで思いました。
もう一点がキャッシュのプロパティに「キャッシュ名」という項目があり、これがファイル名とは異なる名前だからです。
無論APIなどが提供されていないのであれば不可能であると思いますが。

代替も色々検討しているのですが、相手システムがASPの為「IEが起動している状態」で情報が取得出来れば
何とかなるかと思います。
相手APLの仕様上同じクラス名、CAPTION名が複数の窓で開くのでハンドルの取得に手間が掛かるのと
ユーザー操作が増えてしまうので出来れば行いたくないのですがそれしか無さそうな気もします。
(2つのCAPTION名がある場合はユーザーにどちらの情報を取得するかを選択させなければなりません。)

また上記案で解決する為には、SetForegroundWindow関数でフォームが必ずアクティブになるので
あればそこからハンドルを取得して情報を取るという事も出来るのですがOS毎に違う動作を
してしまうので頭を悩ませています。

キャッシュは無理そうなので起動しているIEから情報をダイレクトにもってくる方法があれば教えて下さい。
IEオブジェクトとしてSETするまでの工程が非常に悩みの種です。
本当にご迷惑をお掛けして申し訳ありませんがよろしくお願い致します。

投稿時間:2003/03/30(Sun) 20:24
投稿者名:しんじ
Eメール:
URL :
タイトル:
Re^4: 再度不明な点がありました。
ご返答ありがとう御座います。
実は相手のシステムがかなりの強者でして、エンコードが掛かっているのと
wininetでもプロキシがかなり複雑に設定されておりFTPでの転送も出来ないのです。
こちらのシステムではDNSが解決出来ないのでLOCAL情報からの取得を行おうとしています。
この情報は顧客情報なのですが、私が行いたいのは顧客情報の集計ルーチンを作成したいと考えています。
(現在顧客情報の漏洩などが有りますが悪意のあるスクリプトを作成しようとしている訳ではないので....念の為)
と、、、、、、、、、、記載していたのですが御指摘頂いた内容で解決しました!!!!

ブラウザが起動していない状態ですと「ページが表示できません」Msgが表示されるのですが、
顧客管理のインターフェースが表示されている状態で再度キャッシュのアドレスから
起動させたらうまくいきました。

理由は良く分かりませんがこの方法だとWindowもアクティブになり全く問題ありません。
ちなみに解決に至ったコードは単純ですが下記の内容です。
これにIEが起動しているかどうかのチェックを入れれば全く問題なさそうです。
起動していない場合は先に起動するようにユーザーに促すMsgを作成する予定です。

Private Function Test (sCacheAdress AS String) AS String

  '--  引数sCacheAdressは一時キャッシュのインターネットアドレス格納変数
    
    Set ieTarget = CreateObject("InternetExplorer.Application")
       ieTarget.Visible = True  '--情報を更新する為表示させる
       ieTarget.Navigate sCacheAdress

   '-- 以下略
End Function

花ちゃんさん本当にありがとう御座いました。
助かりました!!!!

今後とも参考にさせて頂くのと同時に私の分かるスキル内であれば皆さんの疑問にも対応させて頂きたい
と思います。
今後ともよろしくお願いいたします。