VB.Net/Windows System/Web Favorite
Display All your favorites
<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Data Imports System.IO Imports System.Collections Imports System.Windows.Forms Imports System.Drawing.Printing Public Class MainClass
Shared Sub Main() Dim Favorites As Favorites = New Favorites() Favorites.ScanFavorites() Dim f As WebFavorite For Each f in Favorites.Favorites Console.WriteLine(f.Name) Next End Sub
End Class
Public Class Favorites
Public Favorites As WebFavoriteCollection Public ReadOnly Property FavoritesFolder() As String Get Return _ Environment.GetFolderPath(Environment.SpecialFolder.Favorites) End Get End Property Public Sub ScanFavorites() ScanFavorites(FavoritesFolder) End Sub Public Sub ScanFavorites(ByVal folderName As String) If Favorites Is Nothing Then Favorites = New _ WebFavoriteCollection() Dim scanFolder As New DirectoryInfo(folderName) Dim favoriteFile As FileInfo For Each favoriteFile In scanFolder.GetFiles If String.rupare(favoriteFile.Extension, ".url", True) = 0 Then Dim favorite As New WebFavorite() favorite.Load(favoriteFile) Favorites.Add(favorite) End If Next End Sub
End Class Public Class WebFavoriteCollection
Inherits CollectionBase Public Sub Add(ByVal favorite As WebFavorite) List.Add(favorite) End Sub Public Sub Remove(ByVal index As Integer) If index >= 0 And index < Count Then List.Remove(index) End If End Sub Public ReadOnly Property Item(ByVal index As Integer) _ As WebFavorite Get Return CType(List.Item(index), WebFavorite) End Get End Property
End Class Public Class WebFavorite
Public Name As String Public Url As String Public Sub Open() System.Diagnostics.Process.Start(Url) End Sub Public Sub Load(ByVal fileInfo As FileInfo) Name = fileInfo.Name.Substring(0, _ fileInfo.Name.Length - fileInfo.Extension.Length) Dim stream As New FileStream(fileInfo.FullName, FileMode.Open) Dim reader As New StreamReader(stream) Do While True Dim buf As String = reader.ReadLine If buf Is Nothing Then Exit Do If buf.StartsWith("URL=") Then Url = buf.Substring(4) Exit Do End If Loop reader.Close() stream.Close() End Sub
End Class
</source>
Display Your Web Favorite Collection
<source lang="vbnet"> Imports System Imports System.Collections Imports System.ruponentModel Imports System.Windows.Forms Imports System.Data Imports System.Configuration Imports System.Resources Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.IO Imports System.Drawing.Printing
Public Class MainClass
Shared Sub Main() Dim myform As Form = New Form1() Application.Run(myform) End Sub
End Class Public Class WebFavoriteCollection
Inherits CollectionBase Public Sub Add(ByVal Favorite As WebFavorite) "Add item to the collection List.Add(Favorite) End Sub Public Sub Remove(ByVal Index As Integer) "Remove item from collection If Index >= 0 And Index < Count Then List.Remove(Index) End If End Sub Public ReadOnly Property Item(ByVal Index As Integer) As WebFavorite Get "Get an item from the collection by its index Return CType(List.Item(Index), WebFavorite) End Get End Property
End Class Public Class Favorites
Implements IDisposable Private disposed As Boolean = False " IDisposable Private Overloads Sub Dispose(ByVal disposing As Boolean) If Not Me.disposed Then If disposing Then " TODO: put code to dispose managed resources End If " TODO: put code to free unmanaged resources here End If Me.disposed = True End Sub
- Region " IDisposable Support "
" This code added by Visual Basic to correctly implement the disposable pattern. Public Overloads Sub Dispose() Implements IDisposable.Dispose " Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. Dispose(True) GC.SuppressFinalize(Me) End Sub Protected Overrides Sub Finalize() " Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. Dispose(False) MyBase.Finalize() End Sub
- End Region
"Public member Public FavoritesCollection As WebFavoriteCollection Public ReadOnly Property FavoritesFolder() As String Get "Return the path to the user"s Favorites folder Return Environment.GetFolderPath( _ Environment.SpecialFolder.Favorites) End Get End Property Public Sub ScanFavorites() "Scan the Favorites folder ScanFavorites(FavoritesFolder) End Sub Public Sub ScanFavorites(ByVal folderName As String) "If the FavoritesCollection member has not been instantiated "then instaniate it If FavoritesCollection Is Nothing Then FavoritesCollection = New WebFavoriteCollection End If "Process each file in the Favorites folder For Each strFile As String In _ My.ruputer.FileSystem.GetFiles(folderName) "If the file has a url extension... If strFile.EndsWith(".url", True, Nothing) Then Try "Create and use a new instanace of the "WebFavorite class Using objWebFavorite As New WebFavorite "Load the file information objWebFavorite.Load(strFile) "Add the object to the collection FavoritesCollection.Add(objWebFavorite) End Using Catch ExceptionErr As Exception "Return the exception to the caller Throw New Exception(ExceptionErr.Message) End Try End If Next End Sub
End Class Public Class WebFavorite
Implements IDisposable Private disposed As Boolean = False " IDisposable Private Overloads Sub Dispose(ByVal disposing As Boolean) If Not Me.disposed Then If disposing Then " TODO: put code to dispose managed resources End If " TODO: put code to free unmanaged resources here End If Me.disposed = True End Sub
- Region " IDisposable Support "
" This code added by Visual Basic to correctly implement the disposable pattern. Public Overloads Sub Dispose() Implements IDisposable.Dispose " Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. Dispose(True) GC.SuppressFinalize(Me) End Sub Protected Overrides Sub Finalize() " Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. Dispose(False) MyBase.Finalize() End Sub
- End Region
"Public Members Public Name As String Public Url As String Public Sub Load(ByVal fileName As String) "Declare variables Dim strData As String Dim strLines() As String Dim strLine As String Dim objFileInfo As New FileInfo(fileName) "Set the Name member to the file name minus the extension Name = objFileInfo.Name.Substring(0, _ objFileInfo.Name.Length - objFileInfo.Extension.Length) Try "Read the entire contents of the file strData = My.ruputer.FileSystem.ReadAllText(fileName) "Split the lines of data in the file strLines = strData.Split(New String() {ControlChars.CrLf}, _ StringSplitOptions.RemoveEmptyEntries) "Process each line looking for the URL For Each strLine In strLines "Does the line of data start with URL= If strLine.StartsWith("URL=") Then "Yes, set the Url member to the actual URL Url = strLine.Substring(4) "Exit the For...Next loop Exit For End If Next Catch IOExceptionErr As IOException "Return the exception to the caller Throw New Exception(IOExceptionErr.Message) End Try End Sub
End Class Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load Try "Create and use a new instanace of the Favorites class Using objFavorites As New Favorites "Scan the Favorites folder objFavorites.ScanFavorites() "Process each objWebFavorite object in the "favorites collection For Each objWebFavorite As WebFavorite In _ objFavorites.FavoritesCollection "Declare a ListViewItem object Dim objListViewItem As New ListViewItem "Set the properties of the ListViewItem object objListViewItem.Text = objWebFavorite.Name objListViewItem.SubItems.Add(objWebFavorite.Url) "Add the ListViewItem object to the ListView lstFavorites.Items.Add(objListViewItem) Next End Using Catch ExceptionErr As Exception "Display the error MessageBox.Show(ExceptionErr.Message, "Favorites Viewer", _ MessageBoxButtons.OK, MessageBoxIcon.Warning) End Try End Sub Private Sub lstFavorites_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles lstFavorites.Click "Update the link label control Text property lnkUrl.Text = "Visit " & lstFavorites.SelectedItems.Item(0).Text "Clear the default hyperlink lnkUrl.Links.Clear() "Add the selected hyperlink to the LinkCollection lnkUrl.Links.Add(6, lstFavorites.SelectedItems.Item(0).Text.Length, _ lstFavorites.SelectedItems.Item(0).SubItems(1).Text) End Sub Private Sub lnkUrl_LinkClicked(ByVal sender As Object, _ ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) _ Handles lnkUrl.LinkClicked "Process the selected link " Process.Start(e.Link.LinkData) End Sub
End Class
<Global.Microsoft.VisualBasic.rupilerServices.DesignerGenerated()> _ Partial Public Class Form1
Inherits System.Windows.Forms.Form "Form overrides dispose to clean up the component list. <System.Diagnostics.DebuggerNonUserCode()> _ Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing AndAlso components IsNot Nothing Then components.Dispose() End If MyBase.Dispose(disposing) End Sub "Required by the Windows Form Designer Private components As System.ruponentModel.IContainer "NOTE: The following procedure is required by the Windows Form Designer "It can be modified using the Windows Form Designer. "Do not modify it using the code editor. <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me.lstFavorites = New System.Windows.Forms.ListView Me.hdrName = New System.Windows.Forms.ColumnHeader Me.hdrUrl = New System.Windows.Forms.ColumnHeader Me.lnkUrl = New System.Windows.Forms.LinkLabel Me.SuspendLayout() " "lstFavorites " Me.lstFavorites.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.lstFavorites.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.hdrName, Me.hdrUrl}) Me.lstFavorites.Location = New System.Drawing.Point(0, 0) Me.lstFavorites.Name = "lstFavorites" Me.lstFavorites.Size = New System.Drawing.Size(457, 223) Me.lstFavorites.TabIndex = 0 Me.lstFavorites.View = System.Windows.Forms.View.Details " "hdrName " Me.hdrName.Text = "Name" Me.hdrName.Width = 250 " "hdrUrl " Me.hdrUrl.Text = "URL" Me.hdrUrl.Width = 250 " "lnkUrl " Me.lnkUrl.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.lnkUrl.AutoSize = True Me.lnkUrl.Location = New System.Drawing.Point(0, 231) Me.lnkUrl.Name = "lnkUrl" Me.lnkUrl.Size = New System.Drawing.Size(55, 13) Me.lnkUrl.TabIndex = 1 Me.lnkUrl.TabStop = True Me.lnkUrl.Text = "LinkLabel1" Me.lnkUrl.TextAlign = System.Drawing.ContentAlignment.MiddleLeft " "Form1 " Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(456, 253) Me.Controls.Add(Me.lnkUrl) Me.Controls.Add(Me.lstFavorites) Me.Name = "Form1" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "My Favorites" Me.ResumeLayout(False) Me.PerformLayout() End Sub Friend WithEvents lstFavorites As System.Windows.Forms.ListView Friend WithEvents hdrName As System.Windows.Forms.ColumnHeader Friend WithEvents hdrUrl As System.Windows.Forms.ColumnHeader Friend WithEvents lnkUrl As System.Windows.Forms.LinkLabel
End Class
</source>
Get Web Favorite Folder
<source lang="vbnet"> Imports System Imports System.Drawing Imports System.Data Imports System.IO Imports System.Collections Imports System.Windows.Forms Imports System.Drawing.Printing Public Class MainClass
Shared Sub Main() Console.WriteLine(Environment.GetFolderPath(Environment.SpecialFolder.Favorites)) End Sub
End Class
</source>