掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
キャッシュファイルがアクセス中かどうかを調べる方法は? (ID:27480)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
閲覧ありがとうございます。 現在作っているプログラムでIEのキャッシュを取得する作業をしているのですが、 一度読み込んだキャッシュファイルを再度読み込まないようにする対応策として、キャッシュの変更日時(アクセス日時?)を取得し、 関数が実行された日時と比較してキャッシュファイルの一覧を生成する、といった方法を取っています。 そこまでは何とか成功したのですが、日時取得に失敗するときがあり、 どうやらIEで現在閲覧中のファイルのタイムデータはうまく取得できないことがわかりました。 そこでアクセス中のファイルは別に保存しておき、後からデータを取得しなおすという方向で行こうと思っているのですが、 IEでそのファイルが開かれているかどうかを調べる方法などはあるでしょうか? もしくはアクセス中のファイルのデータを取得する方法などありましたら、ご指南よろしくお願い致します。 以下のサイトさまを参考にしております ttp://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_InternetCacheHistroy.htm ttp://www.occn.zaq.ne.jp/maekawa/delphitip/index.html#c009 真剣にプログラミングを始めたばかりの初心者で、ネット上のサイト様からお知恵をお借りしている部分が 多く、完全に理解していないところもあるためソースに矛盾点などがあるかもしれず…理解し難い点がありましたらその辺もご指摘くだされば幸いです。 現在のソースです。 ///button2でキャッシュリスト(memo1)から新しく更新されたものだけ取得 procedure TForm1.Button2Click(Sender: TObject); var lFileDateTime : TFileDateTime; cashdatetime:TDatetime; i:integer; newcash:Tstringlist;//取得したいキャッシュリスト nowtime:Tdatetime; begin nowtime:=now;//現在のdatetime取得。 showmessage(formatdatetime('yyyy/mm/dd hh:nn:ss',cashgettimeb)); newcash:=Tstringlist.Create; listbox1.items.Clear; for i:=0 to memo1.Lines.Count-1 do begin lFileDateTime := getFileDate(memo1.Lines[i]);//キャッシュファイルi行目の日時取得 cashdatetime:=lFileDateTime.ModifyDate;//cashdatetimeはアクセス日時 //showmessage(formatdatetime('yyyy/mm/dd hh:nn:ss',cashdatetime)); //showmessage(memo1.Lines[i]); if comparedatetime(cashdatetime,cashgettimeb)>0 then begin;//もし以前button2を押した日付よりキャッシュの更新日時が後だったら newcash.Add(memo1.lines[i]); end; end; cashgettimeb:=nowtime; //showmessage('WRY!'+formatdatetime('yyyy/mm/dd hh:nn:ss',cashgettimeb)); listbox1.Items.Assign(newcash); Label5.Caption:='該当数 : '+IntToStr(newcash.Count); newcash.free; end; procedure TForm1.FormCreate(Sender: TObject); begin cashgettimeb:=0; end; end. //関数 getfiledate=ファイルの各日時を取得 function getFileDate(strFile: String):TFileDateTime; var hFile: integer; ftCreateDate, ftModifyDate, ftAccessDate: TFileTime; lftCreateDate, lftModifyDate, lftAccessDate: TFileTime; stCreateDate, stModifyDate, stAccessDate: TSystemTime; lFileDateTime : TFileDateTime; begin hFile:=FileOpen(strFile,fmOpenRead); //読みとり専用でファイルを開く GetFileTime(hFile,@ftCreateDate,@ftAccessDate,@ftModifyDate); //ファイルの日時を取得 FileClose(hFile); //ファイルを閉じる {ローカル日時に変更} FileTimeToLocalFileTime(ftCreateDate,lftCreateDate); FileTimeToLocalFileTime(ftModifyDate,lftModifyDate); FileTimeToLocalFileTime(ftAccessDate,lftAccessDate); {システム日時に変更} FileTimeToSystemTime(lftCreateDate,stCreateDate); FileTimeToSystemTime(lftModifyDate,stModifyDate); FileTimeToSystemTime(lftAccessDate,stAccessDate); lFileDateTime.CreateDate := SystemTimeToDateTime(stCreateDate); lFileDateTime.ModifyDate := SystemTimeToDateTime(stModifyDate); lFileDateTime.AccessDate := SystemTimeToDateTime(stAccessDate); Result := lFileDateTime; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.