- PR -

お気に入りの実装の方法

1
投稿者投稿内容
Pegasus
会議室デビュー日: 2007/05/09
投稿数: 7
投稿日時: 2007-05-09 12:15
はじめまして。

VS2005を使用してVBアプリケーションを開発しています。
現在、自作ブラウザを開発しているのですが、IEのように「お気に入り」の機能の実装の方法がわかりません。

自分なりに調べた結果「お気に入り」フォルダの取得の方法はわかりました。

Dim myFavoritesPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Favorites)

このフォルダ内のファイル名も取得できるのですが、ファイル名からリンク先のURLの取得方法が分かりません。

もっとスマートな方法がある等、識者の方々のアドバイスが頂ければと思います。

素人なもので的外れな質問をしてるかもしれませんが、よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-09 12:23
引用:

ジュリアンさんの書き込み (2007-05-09 12:15) より:

このフォルダ内のファイル名も取得できるのですが、ファイル名からリンク先のURLの取得方法が分かりません。

もっとスマートな方法がある等、識者の方々のアドバイスが頂ければと思います。


"もっとスマート" といっても比較すべき案が何も提示されていないようですが...
現在どの方法で検討されているのでしょうか?

とりあえず知っている限りの方法を挙げておきます。
  1. Win32_ShortcutFile 関数
  2. WScript.Shell の Shortcut.TargetPath
  3. IShellLink
あとはベタに読んでしまう方法もあるといえばありますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-05-09 12:27
インターネットショートカットファイルをテキストエディタで開いてみれば幸せになれるかもしれません
Pegasus
会議室デビュー日: 2007/05/09
投稿数: 7
投稿日時: 2007-05-09 13:23
引用:

じゃんぬねっとさんの書き込み (2007-05-09 12:23) より:
"もっとスマート" といっても比較すべき案が何も提示されていないようですが...
現在どの方法で検討されているのでしょうか?

とりあえず知っている限りの方法を挙げておきます。
  1. Win32_ShortcutFile 関数
  2. WScript.Shell の Shortcut.TargetPath
  3. IShellLink
あとはベタに読んでしまう方法もあるといえばありますね。





曖昧な表現ですみません。
ファイル名からURLを取り出して・・・と全て自分でやるのではなく、
専用のクラスやコントロールがあれば簡単にできるかと思ったのです。

じゃんぬねっとさんが挙げてくださったものがそれに相当するのですかね?
少し調べたのですが、私の知識ではすぐには分かりませんでした。
もう少し時間をかけて調べてみます。


>かずくん さん
確かに幸せになりました。
これで1つずつ調べていけば実装は可能そうです。



もう少し試行錯誤はしてみますが、アドバイス、ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-09 13:48
引用:

ジュリアンさんの書き込み (2007-05-09 13:23) より:

じゃんぬねっとさんが挙げてくださったものがそれに相当するのですかね?
少し調べたのですが、私の知識ではすぐには分かりませんでした。
もう少し時間をかけて調べてみます。


1 ~ 3 どれも、キーワードをそのまま検索すれば答えが出てくるみたいですね。

引用:

これで1つずつ調べていけば実装は可能そうです。


一応 4 番目 (?) にあげた "ベタに読んでしまう方法" に当たります。
いわゆる INI の形式になっていますので、昔ながらの API を利用できるでしょう。

まあ、お勧めするわけではありませんが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2007-05-09 17:48
こんにちは。

「InternetShortcut APIを使いましょう」…とだけいっても、
おそらくほぼスルーされると思い、サンプルコードを書いてみました。
ご参考までにどうぞ。

コード:
Imports System.Runtime.InteropServices

Module Module1

    Sub Main()

	' InternetShortcutオブジェクトの作成
        Dim internetShortcut As Object = CreateObject("InternetShortcut")

	' IPersistFileインターフェイスの取得
        Dim persistFile As IPersistFile = CType(internetShortcut, IPersistFile)
	' IUniformResourceLocatorインターフェイスの取得
        Dim locator As IUniformResourceLocatorW = CType(internetShortcut, IUniformResourceLocatorW)

	' ショートカットファイルの読み込み
        persistFile.Load("C:\\hoge.url", 0)

	' URLの取得
        Dim url As String
        locator.GetUrl(url)

	' URLの表示
        Console.WriteLine(url)

	' 後始末
        Marshal.ReleaseComObject(locator)
        Marshal.ReleaseComObject(persistFile)
        Marshal.ReleaseComObject(internetShortcut)

    End Sub

<ComImport(), _
InterfaceType(ComInterfaceType.InterfaceIsIUnknown), _
Guid("CABB0DA0-DA57-11CF-9974-0020AFD79762")> _
Public Interface IUniformResourceLocatorW
    Sub SetUrl(<[In](), MarshalAs(UnmanagedType.LPWStr)> ByVal pcszURL As String, ByVal dwInFlags As Int32)
    Sub GetUrl(<Out(), MarshalAs(UnmanagedType.LPWStr)> ByRef ppszURL As String)
    Sub InvokeCommand(ByVal purlici As IntPtr)
End Interface

End Module

Pegasus
会議室デビュー日: 2007/05/09
投稿数: 7
投稿日時: 2007-05-09 18:49
Tdnr_Sym さん、ありがとうございました。
サンプルコードを移植したらうまく動作しました。
ただ、内容を把握するには時間が・・・・・・
1

スキルアップ/キャリアアップ(JOB@IT)