PDA

View Full Version : مقاله: كد es بدست آوردن اطلاعات Assembly و تكميل برنامه بكمك شما



ROSTAM2
پنج شنبه 22 تیر 1391, 03:34 صبح
اين بار شما اطلاعات Assembly به كمك اين كدها را بدست خواهيد آورد

تصوير برنامه :

http://axgig.com/images/35325769874668186097.jpg

مواد لازم:

فرم 1 عدد
TextBox يك فقره
كليد 1 عدد
كليد راديويي (RadioButton) بتعداد 5 تا /// --> -- Appearance = Button -- Tags: = 0 , 1 , 2 , 3 , 4
List View يك عدد SmallImageList= ImageListX
ImageList يك عدد با dpi= 18*18
آيكون جاسازي شده در ريسورس برنامه 3 عدد --> Names: AssemblyIcon -- ResourceIcon -- AttributeIcon

كد ها:

در قسمت General-->Declarations


Imports System.Reflection


در قسمت Form --> Declarations


Enum ItemKinds
Files = 0
Assemblies = 1
Attributes = 2
Modules = 3
Resources = 4
End Enum
Public Property FilePath() As String
Get
Return TextBox1.Text
End Get
Set(ByVal value As String)
TextBox1.Text = value
End Set
End Property


رويداد كليك از كليد :


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ofd As New OpenFileDialog With {.Filter = "(*.*)|*.*"}
With ofd
If .ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub
FilePath = .FileName
GetItems(FilePath, ItemKinds.Files)
RadioButton1.Checked = True
End With
End Sub



متد GetItems:


Sub GetItems(ByVal FileName As String, ByVal ItemKind As ItemKinds)
Dim asm As Assembly, Files() As IO.FileStream, Obj() As Object, _
Mdl As Reflection.Module(), ASN As AssemblyName(), rs As String()
Try
asm = Reflection.Assembly.LoadFile(FileName)
ListView1.Items.Clear()
ImageList1.Images.Clear()
Select Case ItemKind
Case ItemKinds.Files
Files = asm.GetFiles(True)
For i = 0 To Files.Count - 1
Application.DoEvents()
ImageList1.Images.Add(Replace(Files(i).Name, " ", "_"), Icon.ExtractAssociatedIcon(Files(i).Name).ToBitmap )
ListView1.Items.Add(Files(i).Name, Replace(Files(i).Name, " ", "_"))
Next
Case ItemKinds.Attributes
Obj = asm.GetCustomAttributes(True)
For i = 0 To Obj.Count - 1
Application.DoEvents()
ImageList1.Images.Add(Replace(Obj(i).ToString, " ", "_"), My.Resources.AttributeIcon.ToBitmap)
ListView1.Items.Add(Obj(i).ToString, Replace(Obj(i).ToString, " ", "_"))
Next
Case ItemKinds.Assemblies
ASN = asm.GetReferencedAssemblies()
For i = 0 To ASN.Count - 1
Application.DoEvents()
ImageList1.Images.Add(Replace(ASN(i).Name, " ", "_"), My.Resources.AssemblyIcon)
ListView1.Items.Add(ASN(i).Name, Replace(ASN(i).Name, " ", "_"))
Next
Case ItemKinds.Modules
Mdl = asm.GetModules()
For i = 0 To Mdl.Count - 1
Application.DoEvents()
ImageList1.Images.Add(Replace(Mdl(i).Name, " ", "_"), Icon.ExtractAssociatedIcon(Mdl(i).Name).ToBitmap)
ListView1.Items.Add(Mdl(i).FullyQualifiedName, Replace(Mdl(i).Name, " ", "_"))
Next
Case ItemKinds.Resources
rs = asm.GetManifestResourceNames()
For i = 0 To rs.Count - 1
Application.DoEvents()
ImageList1.Images.Add(Replace(rs(i), " ", "_"), My.Resources.ResourceIcon.ToBitmap)
ListView1.Items.Add(rs(i), Replace(rs(i), " ", "_"))
Next
End Select
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
End Try
End Sub


استفاده از رويداد CheckedChange براي همه RadioButton ها:


Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton5.CheckedChanged, RadioButton4.CheckedChanged, RadioButton3.CheckedChanged, RadioButton2.CheckedChanged
If Len(FilePath) = 0 Or sender.Checked = False Then Exit Sub
GetItems(FilePath, Val(sender.tag))
End Sub


مي تونيد براي تكميل برنامه و بهينه سازي اون كمك كنيد ...