none
URLファイルから「ICON_URI」プロパティを取得したい。 RRS feed

  • 質問

  • こんにちわ。
    VB .Netでソフトを開発しているmepと申します。

    開発環境は下記の通りです。
    OS:Wndows Vista Home Premium
    言語:Visual Basic 2008 Express Edition

    IE8で「お気に入り」をHTMLファイルとしてエクスポートすると下記のような内容のファイルが出力されます。
    -------------------------------------------------------------------
    ~省略~
    <DT><H3 FOLDED ADD_DATE="1204881714">Dell</H3>
    <DT><A HREF="http://www.google.co.jp/ig/dell?hl=ja&client=dell-row&channel=jp&ibd=2071206" ADD_DATE="1240828680" LAST_VISIT="1258101540" LAST_MODIFIED="1258101540" ICON_URI="http://www.google.co.jp/favicon.ico">Dell Start Page.url</A>
    ~省略~
    -------------------------------------------------------------------
    このHTMLファイルと同様のファイルをVB .Netで作成できないかな?と思い、現在作成中なのですが、
    このファイルの中で「ICON_URI」という属性(?)がありまして、この値をどこから取得すればよいのかわからず悩んでおります。

    方法として、「お気に入り」フォルダからフォルダとURLファイルを全て取得して、そのフォルダ・ファイルのプロパティを取得する、
    という処理で考えております。下記のコードです。(Shell32を利用してます。)
    ---------------------------------------------------------------------
          Dim URLFolderFileName as String = "C:\Users\username\Favorites\Dell\Dell Start Page.url"
       Dim FolderName As String = ""
          Dim FileName As String = ""
          Dim shell As New ShellClass()
          Dim fol As Folder
          Dim item As FolderItem
          FolderName = Path.GetDirectoryName(URLFolderFileName)
          FileName = Path.GetFileName(URLFolderFileName)
          fol = shell.NameSpace(FolderName)
          item = fol.ParseName(FileName)
          '-- プロパティの個々の要素を取得
          Dim url As String
          Dim last_visit As Integer
          Dim last_modified As Integer
          Dim icon_uri As Object = ""
          url = fol.GetDetailsOf(item, 188)         'URL
          add_date = DateToClockTick(File.GetCreationTime(URLFolderFileName))         '作成日
          last_visit = DateToClockTick(File.GetLastAccessTime(URLFolderFileName))      'アクセス日
          last_modified = DateToClockTick(File.GetLastWriteTime(URLFolderFileName))  '更新日
          '-- ICON_URIのプロパティのインデックス値が不明のため、試験的に全プロパティを表示★★
          For i As Integer = 0 To 9999
            icon_uri = fol.GetDetailsOf(item, i)
            If Not String.IsNullOrEmpty(icon_uri) Then
              Debug.Print(i & "." & icon_uri)
            End If
          Next
    -------------------------------------------------------------------------------------------
    試験的に全プロパティを表示してみましたが、HTMLファイルにある「ICON_URI=」と同じ値は表示されませんでした。
    URLファイルからでは取得できないのでしょうか?

    ICON_URIの値を取得する方法をご存知の方がいらっしゃいましたら、ご教授お願い致します。

    よろしくお願い致します。
    2009年12月17日 11:43

回答

  • .urlファイルは単なるテキストファイルですが。
    shell32が扱えるなら、テキストファイルの読み込みもできますよね…?
    • 回答としてマーク mep1 2009年12月18日 9:51
    • 回答としてマークされていない mep1 2009年12月18日 9:51
    • 回答としてマーク mep1 2009年12月18日 9:54
    2009年12月17日 13:18

すべての返信

  • .urlファイルは単なるテキストファイルですが。
    shell32が扱えるなら、テキストファイルの読み込みもできますよね…?
    • 回答としてマーク mep1 2009年12月18日 9:51
    • 回答としてマークされていない mep1 2009年12月18日 9:51
    • 回答としてマーク mep1 2009年12月18日 9:54
    2009年12月17日 13:18
  • お世話になっております。mepです。
    ご指摘のとおり、URLファイルをテキストファイルとして開いてみて、理解しました。
    「IconFile=」の値を取得する必要があるのですね・・・。
    他のプロパティはファイルプロパティから取得できるのに、このプロパティだけテキストファイルの内容から取得しなければならないとは・・・。アウチ。

    ご回答頂き有難うございました。m_ _m

    2009年12月18日 9:54
  • FolderItemから.GetLink()して、さらに.GetIconLocation(path)で得られます。

    http://msdn.microsoft.com/en-us/library/bb773990(VS.85).aspx
    2009年12月19日 10:42