Explorerで履歴フォルダを見ると、「インターネットアドレス」と「タイトル」
カラムの両方にタイトルが表示されます。
しかし、マウスカーソルを当てると、ツールチップにアドレスが表示されます。
また、プロパティシートのダイアログを表示してもアドレスが表示されます。
Windows98 + IE5.5 + VB6 で、履歴フォルダ内アイテムからWeb Pageアドレス
を得る方法を教えて下さい。(ツールチップやプロパティシートに表示する
方法ではなく、直接にアドレスを得る方法です。)
Explorerと同様、履歴フォルダ内アイテムの表示まではできています。
以上、宜しくお願いします。
Win98ですか……。
WinME/Win2000より前のOSで使えるかどうかはわかりませんが、
IE5.5以降でサポートされている「IUrlHistoryStgインターフェイス」を
使うことで、それらの情報にアクセスできるかも知れません。
# VBから操作するとなると、手続きが面倒ですけど。
回答ありがとうございます。
IUrlHistoryStgインターフェイスのメソッドを調べてみたんですが、
URLを渡す必要があるものばかり(例えばIUrlHistoryStg::QueryUrl)
で、どうしたらいいかわかりません。
ご教授お願いします。
イメージ的には、こんな感じですかね。
ただし、参照設定用のタイプライブラリが標準では用意されていないので、
それは別途用意する必要があります。
Dim oUrlHistoryStg As IUrlHistoryStg
Dim oEnumSTATURL As IEnumSTATURL
Dim udtStat As STATURL
Dim Fetched As Long
Set oUrlHistoryStg = New URLHistory
Set oEnumSTATURL = oUrlHistoryStg.EnumUrls()
'フィルタするかどうかは任意
oEnumSTATURL.SetFilter "http", STATURL_QUERYFLAG_TOPLEVEL
Do
Fetched = 0
On Error Resume Next
oEnumSTATURL.Next 1, udtStat, Fetched
On Error GoTo 0
If Fetched <> 1 Then
Exit Do
End If
'
'STATURL構造体(udtStat)のメンバを取得するためのコードを記述
'
Loop
Set oEnumSTATURL = Nothing
Set oUrlHistoryStg = Nothing
なお、STATURL構造体から取得できるのは、
・URL(pwcsUrl)
・タイトル(pwcsTitle)
・最終訪問日時(ftLastVisited)
・最終更新日時(ftLastUpdated)
・有効期限(ftExpires)
・フラグ(dwFlags)
の6項目です。
サンプルの提供ありがとうございます。
タイプライブラリは、以下から入手できました。
http://www.mvps.org/emorcillo/vb6/tlb/olelib.shtml
履歴フォルダ内アイテムの表示に使った、IShellFolderインターフェース
のタイプライブラリもここのものを使っていましたので。
試してみた結果を報告します。
履歴フォルダ内アイテムから「タイトル」および「最終表示日時」を取得
して、IUrlHistoryStg::EnumUrlsメソッドで列挙した「タイトル」および
「最終訪問日時」と一致したアイテムのURLを返すことで、ほぼ成功します。
ただ、::EnumUrlsメソッドで得た「タイトル」には、空白(タイトルなし)
の場合が幾つかありました。タイムスタンプの最後が分単位の文字列で比較
しているためか、両者が同じ場合だと区別できないことがありました。
あと、アイテム数が多いので、少し時間を要する場合もありました。
かなり有力な方法とは思いますが、検索を使用しないで、シェルアイテム
のPIDLから直接アドレスを得る方法ってご存知ないでしょうか?
前回の結果に誤りがあったので訂正します。
履歴フォルダ内アイテムの「最終表示日時」と::EnumUrlsメソッドの
「最終訪問日時」が一致する。
と報告しましたが、大多数は一致しませんでした。
確認に使用したデータが一致しただけでした。
「最終表示日時」の方が古い日付になっている様です。
他に適当な方法が見つからないので、これで行こうと思っていたのに
振り出しに戻ってしまいました。
何か、方法ないでしょうか?
ツイート | ![]() |