メニューについて
投稿者 shu  (社会人)
投稿日時
2011/7/16 23:46:33
お気に入り用MenuItemクラス
Private Class FavoriteMenuItem
Inherits ToolStripMenuItem
Private Fullname As String
Public Sub New(ByVal Fl As FileInfo)
MyBase.New(Fl.Name.Replace(Fl.Extension, ""))
Fullname = Fl.FullName
AddHandler Click, AddressOf ClickFavorite
End Sub
Private Sub ClickFavorite(ByVal sender As Object, ByVal e As EventArgs)
Process.Start(Fullname)
End Sub
End Class
ドロップダウンメニュー追加処理
Dim dinf As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
For Each fl In dinf.GetFiles("*.url", SearchOption.AllDirectories)
ToolStripSplitButton1.DropDownItems.Add(New FavoriteMenuItem(fl))
Next
Private Class FavoriteMenuItem
Inherits ToolStripMenuItem
Private Fullname As String
Public Sub New(ByVal Fl As FileInfo)
MyBase.New(Fl.Name.Replace(Fl.Extension, ""))
Fullname = Fl.FullName
AddHandler Click, AddressOf ClickFavorite
End Sub
Private Sub ClickFavorite(ByVal sender As Object, ByVal e As EventArgs)
Process.Start(Fullname)
End Sub
End Class
ドロップダウンメニュー追加処理
Dim dinf As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
For Each fl In dinf.GetFiles("*.url", SearchOption.AllDirectories)
ToolStripSplitButton1.DropDownItems.Add(New FavoriteMenuItem(fl))
Next
投稿者 ともや  (高校生)
投稿日時
2011/7/17 10:44:55
ありがとうございます。
出来ました!!
あの=クリックしたらIEがひらいてしまうのですがWebBrowserで開くにはどうしたらいいでしょうか?
出来ました!!
あの=クリックしたらIEがひらいてしまうのですがWebBrowserで開くにはどうしたらいいでしょうか?
投稿者 O-157  (その他)
投稿日時
2011/7/17 15:02:55
FullnameをURLにして
Fullname = Fl.FullName
を
Dim text As String = My.Computer.FileSystem.ReadAllText(Fl.FullName)
Dim iti As Integer = text.LastIndexOf("URL=") + 4
Dim Length As Integer = text.IndexOf(vbCrLf, iti) - iti
If Math.Max(0, Length) = 0 Then
Length = text.Length - iti
End If
URL = text.Substring(iti, Length)
にして
Process.Start(Fullname)をForm1.WebBrowser1.Url = New Uri(URL)
にしたらできました。読みにくくてすいません。
Fullname = Fl.FullName
を
Dim text As String = My.Computer.FileSystem.ReadAllText(Fl.FullName)
Dim iti As Integer = text.LastIndexOf("URL=") + 4
Dim Length As Integer = text.IndexOf(vbCrLf, iti) - iti
If Math.Max(0, Length) = 0 Then
Length = text.Length - iti
End If
URL = text.Substring(iti, Length)
にして
Process.Start(Fullname)をForm1.WebBrowser1.Url = New Uri(URL)
にしたらできました。読みにくくてすいません。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2011/7/17 15:12:37
WebBrowser で開くようにしてみました。
Imports System.IO
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Runtime.InteropServices.ComTypes
Imports System.ComponentModel
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim dinf As New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
For Each fl In dinf.GetFiles("*.url", SearchOption.AllDirectories)
ToolStripSplitButton1.DropDownItems.Add(New FavoriteMenuItem(fl, AddressOf WebBrowser1.Navigate))
Next
End Sub
Public Class FavoriteMenuItem
Inherits ToolStripMenuItem
Private Fullname As String
Private url As Uri
Private action As Action(Of Uri)
Public Sub New(ByVal Fl As FileInfo, ByVal action As Action(Of Uri))
MyBase.New(Fl.Name.Replace(Fl.Extension, ""))
Fullname = Fl.FullName
Me.action = action
Dim o As Object = CreateObject("InternetShortcut")
DirectCast(o, IPersistFile).Load(Fl.FullName, 0)
Dim sb As New System.Text.StringBuilder()
Dim url As String = Nothing
DirectCast(o, IUniformResourceLocatorW).GetUrl(url)
Me.url = New Uri(url)
Marshal.ReleaseComObject(o)
AddHandler Click, AddressOf ClickFavorite
End Sub
Private Sub ClickFavorite(ByVal sender As Object, ByVal e As EventArgs)
If action IsNot Nothing Then
action(Me.url)
End If
End Sub
<ComImport()> _
<InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> _
<Guid("CABB0DA0-DA57-11CF-9974-0020AFD79762")> _
Private Interface IUniformResourceLocatorW
<EditorBrowsable(EditorBrowsableState.Never)> Sub _SetUrl()
Sub GetUrl(<Out(), MarshalAs(UnmanagedType.LPWStr)> _
ByRef ppszURL As String)
<EditorBrowsable(EditorBrowsableState.Never)> Sub _InvokeCommand()
End Interface
End Class
End Class
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2011/7/17 15:38:33
ちなみにテキストとして直接読む場合は、対iniファイル用の手法を使った方が良いですよ。
最後の URL= 以降という条件だけで検索した場合、たとえば、
「http://www.kanzaki.com/docs/html/dummy?URL=http%3A%2F%2Fexample.com%2F」
へのお気に入りを誤読してしまい、「http%3A%2F%2Fexample.com%2F」に化けてしまいます。
また、漢字等を含む URL に備えて文字コードも考慮する必要もあります。
最近のバージョンのインターネットショートカットでは、多言語対応のために
日本語を含んだ URL に対して、通常版、ANSI版、WIDE版という複数の URL が
一つのショートカット内に併記されています(WIDE 版は、UTF-7 で記録される)。
最後の URL= 以降という条件だけで検索した場合、たとえば、
「http://www.kanzaki.com/docs/html/dummy?URL=http%3A%2F%2Fexample.com%2F」
へのお気に入りを誤読してしまい、「http%3A%2F%2Fexample.com%2F」に化けてしまいます。
また、漢字等を含む URL に備えて文字コードも考慮する必要もあります。
最近のバージョンのインターネットショートカットでは、多言語対応のために
日本語を含んだ URL に対して、通常版、ANSI版、WIDE版という複数の URL が
一つのショートカット内に併記されています(WIDE 版は、UTF-7 で記録される)。
投稿者 ともや  (高校生)
投稿日時
2011/7/18 11:20:40
お二人ともご丁寧にありがとうございました!!
あの~いい機会なので聞かせてもらいます。
今、左隅にタブを配置してタブ1にWebBrowserを配置して、タブコントロールの隣にWebBrowser2を
配置しています。
WebBrowser1にお気に入りを表示することは出来ています。
サイトをクリックしたらWebBrowser2に表示される方法が分かりません。
わかる方よかったら教えていただけないでしょうか??
あの~いい機会なので聞かせてもらいます。
今、左隅にタブを配置してタブ1にWebBrowserを配置して、タブコントロールの隣にWebBrowser2を
配置しています。
WebBrowser1にお気に入りを表示することは出来ています。
サイトをクリックしたらWebBrowser2に表示される方法が分かりません。
わかる方よかったら教えていただけないでしょうか??
投稿者 まだまだ  (高校生)
投稿日時
2011/7/18 12:23:27
>サイトをクリックしたらWebBrowser2に表示される方法が分かりません。
これはWebBrowser1上のLinkをClickしたらLink先がWebBrowser2に表示されるという意味でしょうか。
それならばWebBrowser1のNavigatingEventでWebBrowser1のNavigatingをCancelした後、
CancelしたURLをWebBrowser2でNavigateしてやれば実現できるかと思います。
こんな感じでしょうか?
日本語読みにくくてすみません。
これはWebBrowser1上のLinkをClickしたらLink先がWebBrowser2に表示されるという意味でしょうか。
それならばWebBrowser1のNavigatingEventでWebBrowser1のNavigatingをCancelした後、
CancelしたURLをWebBrowser2でNavigateしてやれば実現できるかと思います。
Private Sub WebBrowser1_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
WebBrowser2.Navigate(e.Url)
e.Cancel = True
End Sub
こんな感じでしょうか?
日本語読みにくくてすみません。
投稿者 ともや  (高校生)
投稿日時
2011/7/18 15:07:55
WebBrowser1にIEのお気に入りを開いておきます。
WebBrowser1にお気に入りが開かれていますので表示したいサイトをクリックまたはダブルクリック
したらWebBrowser2に表示されるよにしたいです。
日本語ヘタですみません
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate(System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
End Sub
WebBrowser1にお気に入りが開かれていますので表示したいサイトをクリックまたはダブルクリック
したらWebBrowser2に表示されるよにしたいです。
日本語ヘタですみません
表示されるようにしたいです。
そのような方法はどのようにすればいいでしょうか??