<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net_Tutorial%2FDevelopment%2FResources_File</id>
		<title>VB.Net Tutorial/Development/Resources File - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VB.Net_Tutorial%2FDevelopment%2FResources_File"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Development/Resources_File&amp;action=history"/>
		<updated>2026-04-05T21:59:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Development/Resources_File&amp;diff=2861&amp;oldid=prev</id>
		<title> в 16:40, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Development/Resources_File&amp;diff=2861&amp;oldid=prev"/>
				<updated>2010-05-26T16:40:30Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:40, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Development/Resources_File&amp;diff=2862&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VB.Net_Tutorial/Development/Resources_File&amp;diff=2862&amp;oldid=prev"/>
				<updated>2010-05-26T12:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Resource File reader==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbnet&amp;quot;&amp;gt;&amp;quot; Quote from&lt;br /&gt;
&amp;quot;Windows Forms Programming in VB&lt;br /&gt;
&amp;quot;by Chris Sells (Author), Justin Gehtland (Author)&lt;br /&gt;
&amp;quot;Publisher: Addison-Wesley Professional; 1st edition (October 24, 2003)&lt;br /&gt;
&amp;quot;Language: English&lt;br /&gt;
&amp;quot;ISBN-10: 0321125193&lt;br /&gt;
&amp;quot;ISBN-13: 978-0321125194&lt;br /&gt;
&lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.Drawing&lt;br /&gt;
Imports System.Collections&lt;br /&gt;
Imports System.ruponentModel&lt;br /&gt;
Imports System.Windows.Forms&lt;br /&gt;
Imports System.Data&lt;br /&gt;
Imports System.IO &amp;quot; FileStream&lt;br /&gt;
Imports System.Reflection &amp;quot; Assembly&lt;br /&gt;
Imports System.Resources &amp;quot; Resource readers&lt;br /&gt;
public class TEst&lt;br /&gt;
   public Shared Sub Main&lt;br /&gt;
        Application.Run(New Form1)&lt;br /&gt;
   End Sub&lt;br /&gt;
End class&lt;br /&gt;
Public Class Form1&lt;br /&gt;
    Inherits System.Windows.Forms.Form&lt;br /&gt;
#Region &amp;quot; Windows Form Designer generated code &amp;quot;&lt;br /&gt;
    Public Sub New()&lt;br /&gt;
        MyBase.New()&lt;br /&gt;
        &amp;quot;This call is required by the Windows Form Designer.&lt;br /&gt;
        InitializeComponent()&lt;br /&gt;
        &amp;quot;Add any initialization after the InitializeComponent() call&lt;br /&gt;
    End Sub&lt;br /&gt;
    &amp;quot;Form overrides dispose to clean up the component list.&lt;br /&gt;
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)&lt;br /&gt;
        If disposing Then&lt;br /&gt;
            If Not (components Is Nothing) Then&lt;br /&gt;
                components.Dispose()&lt;br /&gt;
            End If&lt;br /&gt;
        End If&lt;br /&gt;
        MyBase.Dispose(disposing)&lt;br /&gt;
    End Sub&lt;br /&gt;
    &amp;quot;Required by the Windows Form Designer&lt;br /&gt;
    Private components As System.ruponentModel.IContainer&lt;br /&gt;
    &amp;quot;NOTE: The following procedure is required by the Windows Form Designer&lt;br /&gt;
    &amp;quot;It can be modified using the Windows Form Designer.  &lt;br /&gt;
    &amp;quot;Do not modify it using the code editor.&lt;br /&gt;
    Friend WithEvents fileOpenMenuItem As System.Windows.Forms.MenuItem&lt;br /&gt;
    Friend WithEvents helpAboutMenuItem As System.Windows.Forms.MenuItem&lt;br /&gt;
    Friend WithEvents statusBar1 As System.Windows.Forms.StatusBar&lt;br /&gt;
    Friend WithEvents menuItem5 As System.Windows.Forms.MenuItem&lt;br /&gt;
    Friend WithEvents fileExitMenuItem As System.Windows.Forms.MenuItem&lt;br /&gt;
    Friend WithEvents openFileDialog1 As System.Windows.Forms.OpenFileDialog&lt;br /&gt;
    Friend WithEvents mainMenu1 As System.Windows.Forms.MainMenu&lt;br /&gt;
    Friend WithEvents menuItem1 As System.Windows.Forms.MenuItem&lt;br /&gt;
    Friend WithEvents menuItem3 As System.Windows.Forms.MenuItem&lt;br /&gt;
    Friend WithEvents resourcesTreeView As System.Windows.Forms.TreeView&lt;br /&gt;
    &amp;lt;System.Diagnostics.DebuggerStepThrough()&amp;gt; Private Sub InitializeComponent()&lt;br /&gt;
        Me.fileOpenMenuItem = New System.Windows.Forms.MenuItem()&lt;br /&gt;
        Me.helpAboutMenuItem = New System.Windows.Forms.MenuItem()&lt;br /&gt;
        Me.statusBar1 = New System.Windows.Forms.StatusBar()&lt;br /&gt;
        Me.menuItem5 = New System.Windows.Forms.MenuItem()&lt;br /&gt;
        Me.fileExitMenuItem = New System.Windows.Forms.MenuItem()&lt;br /&gt;
        Me.openFileDialog1 = New System.Windows.Forms.OpenFileDialog()&lt;br /&gt;
        Me.mainMenu1 = New System.Windows.Forms.MainMenu()&lt;br /&gt;
        Me.menuItem1 = New System.Windows.Forms.MenuItem()&lt;br /&gt;
        Me.menuItem3 = New System.Windows.Forms.MenuItem()&lt;br /&gt;
        Me.resourcesTreeView = New System.Windows.Forms.TreeView()&lt;br /&gt;
        Me.SuspendLayout()&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;fileOpenMenuItem&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.fileOpenMenuItem.Index = 0&lt;br /&gt;
        Me.fileOpenMenuItem.Shortcut = System.Windows.Forms.Shortcut.CtrlO&lt;br /&gt;
        Me.fileOpenMenuItem.Text = &amp;quot;&amp;amp;Open...&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;helpAboutMenuItem&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.helpAboutMenuItem.Index = 0&lt;br /&gt;
        Me.helpAboutMenuItem.Text = &amp;quot;&amp;amp;About...&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;statusBar1&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.statusBar1.Location = New System.Drawing.Point(0, 192)&lt;br /&gt;
        Me.statusBar1.Name = &amp;quot;statusBar1&amp;quot;&lt;br /&gt;
        Me.statusBar1.Size = New System.Drawing.Size(472, 22)&lt;br /&gt;
        Me.statusBar1.TabIndex = 3&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;menuItem5&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.menuItem5.Index = 1&lt;br /&gt;
        Me.menuItem5.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.helpAboutMenuItem})&lt;br /&gt;
        Me.menuItem5.Text = &amp;quot;&amp;amp;Help&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;fileExitMenuItem&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.fileExitMenuItem.Index = 2&lt;br /&gt;
        Me.fileExitMenuItem.Text = &amp;quot;E&amp;amp;xit&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;openFileDialog1&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.openFileDialog1.Filter = &amp;quot;Resource Files (*.exe, *.dll, *.resx, *.resources)|*.exe;*.dll;*.resx;*.resources&amp;quot; &amp;amp; _&lt;br /&gt;
        &amp;quot;|All Files (*.*)|*.*&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;mainMenu1&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.mainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.menuItem1, Me.menuItem5})&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;menuItem1&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.menuItem1.Index = 0&lt;br /&gt;
        Me.menuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.fileOpenMenuItem, Me.menuItem3, Me.fileExitMenuItem})&lt;br /&gt;
        Me.menuItem1.Text = &amp;quot;&amp;amp;File&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;menuItem3&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.menuItem3.Index = 1&lt;br /&gt;
        Me.menuItem3.Text = &amp;quot;-&amp;quot;&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;resourcesTreeView&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.resourcesTreeView.Dock = System.Windows.Forms.DockStyle.Fill&lt;br /&gt;
        Me.resourcesTreeView.ImageIndex = -1&lt;br /&gt;
        Me.resourcesTreeView.Name = &amp;quot;resourcesTreeView&amp;quot;&lt;br /&gt;
        Me.resourcesTreeView.SelectedImageIndex = -1&lt;br /&gt;
        Me.resourcesTreeView.Size = New System.Drawing.Size(472, 214)&lt;br /&gt;
        Me.resourcesTreeView.Sorted = True&lt;br /&gt;
        Me.resourcesTreeView.TabIndex = 2&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        &amp;quot;Form1&lt;br /&gt;
        &amp;quot;&lt;br /&gt;
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)&lt;br /&gt;
        Me.ClientSize = New System.Drawing.Size(472, 214)&lt;br /&gt;
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.statusBar1, Me.resourcesTreeView})&lt;br /&gt;
        Me.Menu = Me.mainMenu1&lt;br /&gt;
        Me.Name = &amp;quot;Form1&amp;quot;&lt;br /&gt;
        Me.Text = &amp;quot;Resource Explorer&amp;quot;&lt;br /&gt;
        Me.ResumeLayout(False)&lt;br /&gt;
    End Sub&lt;br /&gt;
#End Region&lt;br /&gt;
    Sub LoadResourcesFromFile(ByVal fileName As String)&lt;br /&gt;
        resourcesTreeView.Nodes.Clear()&lt;br /&gt;
        Dim root As TreeNode = resourcesTreeView.Nodes.Add(Path.GetFileName(fileName))&lt;br /&gt;
        Select Case System.IO.Path.GetExtension(fileName).ToLower()&lt;br /&gt;
            Case &amp;quot;.exe&amp;quot;, &amp;quot;.dll&amp;quot;&lt;br /&gt;
                LoadResourcesFromAssemblyFile(root, fileName)&lt;br /&gt;
            Case &amp;quot;.resx&amp;quot;&lt;br /&gt;
                LoadResourcesFromResxFile(root, fileName)&lt;br /&gt;
            Case &amp;quot;.resources&amp;quot;&lt;br /&gt;
                LoadResourcesFromResourcesFile(root, fileName)&lt;br /&gt;
            Case Else&lt;br /&gt;
                MessageBox.Show(&amp;quot;Unknown file format&amp;quot;)&lt;br /&gt;
        End Select&lt;br /&gt;
        root.Expand()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub LoadResourcesFromAssemblyFile(ByVal parent As TreeNode, ByVal fileName As String)&lt;br /&gt;
        Dim assem As [Assembly] = [Assembly].LoadFrom(fileName)&lt;br /&gt;
        Dim resourceName As String&lt;br /&gt;
        For Each resourceName In assem.GetManifestResourceNames&lt;br /&gt;
            Dim node As TreeNode = parent.Nodes.Add(resourceName)&lt;br /&gt;
            If resourceName.ToLower().EndsWith(&amp;quot;.resources&amp;quot;) Then&lt;br /&gt;
                Dim s As Stream = assem.GetManifestResourceStream(resourceName)&lt;br /&gt;
                LoadResourcesFromResourcesStream(node, s)&lt;br /&gt;
                s.Close()&lt;br /&gt;
            End If&lt;br /&gt;
        Next&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub LoadResourcesFromResxFile(ByVal parent As TreeNode, ByVal fileName As String)&lt;br /&gt;
        Dim reader As ResXResourceReader = New ResXResourceReader(fileName)&lt;br /&gt;
        Dim entry As DictionaryEntry&lt;br /&gt;
        For Each entry In reader&lt;br /&gt;
            Dim node As TreeNode = parent.Nodes.Add(String.Format(&amp;quot;{0} ({1})&amp;quot;, entry.Key.ToString(), entry.Value.GetType()))&lt;br /&gt;
            node.Tag = entry.Value&lt;br /&gt;
        Next&lt;br /&gt;
        reader.Close()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub LoadResourcesFromResourcesFile(ByVal parent As TreeNode, ByVal fileName As String)&lt;br /&gt;
        Dim s As FileStream = New FileStream(fileName, FileMode.Open, FileAccess.Read)&lt;br /&gt;
        LoadResourcesFromResourcesStream(parent, s)&lt;br /&gt;
        s.Close()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub LoadResourcesFromResourcesStream(ByVal parent As TreeNode, ByVal s As Stream)&lt;br /&gt;
        Dim reader As ResourceReader = New ResourceReader(s)&lt;br /&gt;
        Dim entry As DictionaryEntry&lt;br /&gt;
        For Each entry In reader&lt;br /&gt;
            Dim node As TreeNode = parent.Nodes.Add(String.Format(&amp;quot;{0} ({1})&amp;quot;, entry.Key.ToString(), IIf(Not entry.Value Is Nothing, entry.Value.GetType().ToString(), &amp;quot;&amp;lt;none&amp;gt;&amp;quot;)))&lt;br /&gt;
            node.Tag = entry.Value&lt;br /&gt;
        Next&lt;br /&gt;
        reader.Close()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Sub ShowSelectedNode()&lt;br /&gt;
        Dim node As TreeNode = resourcesTreeView.SelectedNode&lt;br /&gt;
        If node Is Nothing Then Exit Sub&lt;br /&gt;
    End Sub&lt;br /&gt;
    Private Sub fileOpenMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles fileOpenMenuItem.Click&lt;br /&gt;
        If openFileDialog1.ShowDialog = DialogResult.OK Then&lt;br /&gt;
            LoadResourcesFromFile(openFileDialog1.FileName)&lt;br /&gt;
        End If&lt;br /&gt;
    End Sub&lt;br /&gt;
    Private Sub resourcesTreeView_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles resourcesTreeView.DoubleClick&lt;br /&gt;
        ShowSelectedNode()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Private Sub resourcesTreeView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles resourcesTreeView.KeyDown&lt;br /&gt;
        If Me Is Form.ActiveForm And (e.KeyCode And Keys.Enter = Keys.Enter) Then ShowSelectedNode()&lt;br /&gt;
    End Sub&lt;br /&gt;
    Private Sub resourcesTreeView_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles resourcesTreeView.AfterSelect&lt;br /&gt;
        statusBar1.Text = &amp;quot;&amp;quot;&lt;br /&gt;
        Dim node As TreeNode = resourcesTreeView.SelectedNode&lt;br /&gt;
        If node Is Nothing Then Exit Sub&lt;br /&gt;
        Dim value As Object = node.Tag&lt;br /&gt;
        If value Is Nothing Then Exit Sub&lt;br /&gt;
        statusBar1.Text = value.ToString()&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>