C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: WebBrowserのお気に入り機能


(過去ログ 72 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■42000 / inTopicNo.1)  WebBrowserのお気に入り機能
  
□投稿者/ ド素人@VB (1回)-(2009/10/06(Tue) 12:09:02)

分類:[VB.NET/VB2005 以降] 

2009/10/06(Tue) 12:10:10 編集(投稿者)

参考にさせてもらってます。
最近、VBをはじめて、第一作目としてWebブラウザを作ろうと考えています。
WebBrowser1とWebBrowser2を用意して、WebBrowser1にページを表示することができました。
WebBrowser2にはお気に入りを表示しようと考え、WebBrowser2に表示することもできました。

-------コード始まり-----------------
WebBrowser1.Navigate("http://www.google.co.jp")
WebBrowser2.Navigate(System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
-------コード終わり-----------------

こんな感じで表示することは出来たのですが、お気に入りをクリックすると、別窓でIEが開いてしまいます。
クリックしたお気に入りのURLを取得して、WebBrowser1で表示しようと思ったのですが、
URLの取得方法が分からずに断念しています。
お気に入りでクリックしたページをWebBrowser1で表示することは出来ますでしょうか?

開発環境は VisualBasic 2008 です。

掲示板に書き込むのは初めてなので、マナーが悪いかもしれませんがよろしくお願いします。
引用返信 編集キー/
■42004 / inTopicNo.2)  Re[1]: WebBrowserのお気に入り機能
□投稿者/ ヴァン (6回)-(2009/10/06(Tue) 14:48:17)
こんにちは。

> こんな感じで表示することは出来たのですが、お気に入りをクリックすると、別窓でIEが開いてしまいます。

お気に入りのファイルの拡張子は「.url」です。
これに関連付けされているアプリケーションがIEになってます。(デフォルト)
なので、お気に入りをクリックするとIEが開きます。

ファイルの関連付けを自分のアプリに変更するか、お気に入りのファイルからURLを取得してWebBrowserで表示させる必要があります。


引用返信 編集キー/
■42010 / inTopicNo.3)  Re[2]: WebBrowserのお気に入り機能
□投稿者/ ド素人@VB (2回)-(2009/10/06(Tue) 16:54:18)
> お気に入りのファイルの拡張子は「.url」です。
> これに関連付けされているアプリケーションがIEになってます。(デフォルト)
> なので、お気に入りをクリックするとIEが開きます。
> ファイルの関連付けを自分のアプリに変更するか、お気に入りのファイルからURLを取得してWebBrowserで表示させる必要があります。

関連付けなどをいじるのいやなので、URLを取得してWebBrowserで表示したいと考えています。
お気に入りをメモ帳で開いたら

[DEFAULT]
BASEURL=http://www.yahoo.co.jp/
[InternetShortcut]
URL=http://www.yahoo.co.jp/
IDList=
IconFile=http://www.yahoo.co.jp/favicon.ico
IconIndex=1
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2

こんな風に出たので、そこからURLだけ取得してWebBrowserで表示しようとしたのですが、どのように取得すればよいか分かりません。
素人なので意味不明なことを言っているかもしれません。
もっといい方法などがありましたら教えていただくとありがたいです。
引用返信 編集キー/
■42018 / inTopicNo.4)  Re[3]: WebBrowserのお気に入り機能
□投稿者/ ヴァン (7回)-(2009/10/06(Tue) 17:47:28)
No42010 (ド素人@VB さん) に返信

> こんな風に出たので、そこからURLだけ取得してWebBrowserで表示しようとしたのですが、どのように取得すればよいか分かりません。
> 素人なので意味不明なことを言っているかもしれません。
> もっといい方法などがありましたら教えていただくとありがたいです。

そこからURLを取り出すだけですけど。

または、.urlファイルは基本的に .iniファイルです。
.iniファイルのI/Fを書けば良いです。
引用返信 編集キー/
■42035 / inTopicNo.5)  Re[4]: WebBrowserのお気に入り機能
□投稿者/ ド素人@VB (3回)-(2009/10/06(Tue) 22:06:39)
2009/10/07(Wed) 10:56:40 編集(投稿者)
2009/10/06(Tue) 22:09:11 編集(投稿者)

> そこからURLを取り出すだけですけど。

URLを取得するのは出来ると思うのですが、クリックされたファイルを取得する方法が分かりません。

> または、.urlファイルは基本的に .iniファイルです。
> .iniファイルのI/Fを書けば良いです。

iniファイルとは設定ファイルみたいのものですよね?iniファイルの読み込みみたいにすればいいのですかね?
分からないことだらけですいません。
引用返信 編集キー/
■42057 / inTopicNo.6)  Re[5]: WebBrowserのお気に入り機能
□投稿者/ ヴァン (10回)-(2009/10/07(Wed) 11:44:17)
No42035 (ド素人@VB さん) に返信

> URLを取得するのは出来ると思うのですが、クリックされたファイルを取得する方法が分かりません。

WebBrowserコントロールでフォルダを開いたことないから良く解りません。
この部分はTreeViewなりListBoxなりで行った方が良いと思いますけど。

> iniファイルとは設定ファイルみたいのものですよね?iniファイルの読み込みみたいにすればいいのですかね?
> 分からないことだらけですいません。

URLを取得するだけなら、iniファイルとして扱うよりは普通のファイルとして扱った方が簡単そうですけど。

引用返信 編集キー/
■42060 / inTopicNo.7)  Re[5]: WebBrowserのお気に入り機能
□投稿者/ 魔界の仮面弁士 (1345回)-(2009/10/07(Wed) 12:21:27)
No42035 (ド素人@VB さん) に返信
>>そこからURLを取り出すだけですけど。
> URLを取得するのは出来ると思うのですが、
*.url の内容を読み取るには、正式には IUniformResourceLocator インターフェイスの
GerURL メソッドを利用する事になります。(No6846 で回答しています)
http://msdn.microsoft.com/en-us/library/dd565673.aspx

--------------
Option Strict On
Imports System
Imports System.Runtime.InteropServices
Imports System.Runtime.InteropServices.ComTypes

Module Module1
    Public Function GetUrl(ByVal filePath As String) As String
        Dim urlFile As Object = Nothing
        Dim pFile As IPersistFile
        Dim locator As IUniformResourceLocatorW
        Try
            urlFile = CreateObject("InternetShortcut")
            pFile = DirectCast(urlFile, IPersistFile)
            pFile.Load(filePath, 0)
            locator = DirectCast(urlFile, IUniformResourceLocatorW)
            Dim url As String = String.Empty
            locator.GetUrl(url)
            Return url
        Finally
            Marshal.ReleaseComObject(urlFile)
        End Try
    End Function

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


まぁ、中身は ini ファイルに酷似したテキストファイルなので、
他の方法で読み取る事も可能でしょうけれども。



> クリックされたファイルを取得する方法が分かりません。

WebBrowser 上にフォルダを表示して、選択された項目(フォルダ/ファイル)を取得する方法は、
以前、No41336 にサンプルを書いています。 C# 版ですが、興味があれば参照してみてください。

ただしヴァンさんが書かれていますように、フォルダをそのまま表示するのではなく、
自己管理された方が良いと思います。

引用返信 編集キー/
■42062 / inTopicNo.8)  Re[6]: WebBrowserのお気に入り機能
□投稿者/ 魔界の仮面弁士 (1346回)-(2009/10/07(Wed) 12:46:01)
No42060 (魔界の仮面弁士) に追記
>>クリックされたファイルを取得する方法が分かりません。
> WebBrowser 上にフォルダを表示して、選択された項目(フォルダ/ファイル)を取得する方法は、
> 以前、No41336 にサンプルを書いています。 C# 版ですが、興味があれば参照してみてください。

VB 版に書きなおしてみました。

Option Strict Off
Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("http://www.google.co.jp")
        WebBrowser2.Navigate(System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim wb As Object = WebBrowser2.ActiveXInstance
        Dim doc As Object = wb.Document

        Dim folderItem As Object = doc.FocusedItem
        If folderItem Is Nothing Then
            'フォルダが空の場合に起こりえる。
            MsgBox("フォーカスがありません。")
        Else
            'ファイル名が破線で囲まれているアイテム。
            '(選択されているかどうかは無関係)
            MsgBox(folderItem.Name & "にフォーカスがあります。")
        End If

        '選択されているアイテムを列挙。
        Dim folderItems As Object = doc.SelectedItems
        Dim count As Integer = CInt(folderItems.Count)
        MsgBox(CStr(count) & "個のフォルダ/ファイルが選択されています。")
        For Each folderItem In folderItems
            MsgBox(folderItem.Path)
        Next
    End Sub
End Class

引用返信 編集キー/
■42065 / inTopicNo.9)  Re[7]: WebBrowserのお気に入り機能
□投稿者/ ド素人@VB (4回)-(2009/10/07(Wed) 13:24:59)
No42057 (ヴァン さん) に返信

>WebBrowserコントロールでフォルダを開いたことないから良く解りません。
>この部分はTreeViewなりListBoxなりで行った方が良いと思いますけど。

やはり自分で作成したほうがいいですよね、、、


No42060 (魔界の仮面弁士 さん) に返信

>*.url の内容を読み取るには、正式には IUniformResourceLocator インターフェイスの
>GerURL メソッドを利用する事になります。(No6846 で回答しています)
>http://msdn.microsoft.com/en-us/library/dd565673.aspx

コードまで書いてくれてありがたいです。
とても参考になります。


No42062 (魔界の仮面弁士 さん) に返信

> WebBrowser 上にフォルダを表示して、選択された項目(フォルダ/ファイル)を取得する方法は、
> 以前、No41336 にサンプルを書いています。 C# 版ですが、興味があれば参照してみてください。

> VB 版に書きなおしてみました。

ありがとうございます。私の力では無理だと思うのでとてもありがたいです。

ヴァンさん、魔界の仮面弁士さん、とてもわかりやすく教えていただき、ありがとうございます。
まだまだ分からないことがたくさんありますが、これからもがんばっていきたいと思います。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -