VB.Net/Windows System/Web Favorite

Материал из VB Эксперт
Перейти к: навигация, поиск

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
  1. 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
  1. 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
  1. 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
  1. 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>