[VISUAL BASIC] Get File Information Example

Hi mọi người, hôm nay mình sẽ hướng dẫn các bạn kiểm tra thông tin tệp tin của các bạn bằng ứng dụng mình đang phát triển.

Ví dụ này cho thấy cách truy cập một tệp và lấy thông tin về tệp đó.
Nếu sử dụng cụm tương tác chính được cung cấp cùng với SOLIDWORKS PDM Professional, hãy xem mục Sử dụng .NET Framework 4.0 trong Ứng dụng độc lập .


FULL SOURCE CODE:
'----------------------------------------------------------------------------
' Preconditions:
' 1. Start Microsoft Visual Studio.
'    a. Bấm vào tệp > New > Project > Visual Basic > Windows Forms Application.
'    b. Nhập tệp vào tên.
'    c. Nhấp vào Duyệt và điều hướng đến thư mục nơi tạo
'       dự an.
'    d. Bấm vào đồng ý. 
'    e. Nhấp vào Hiển thị tất cả các tệp trong thanh công cụ Solution Explorer và mở rộng Form1.vb trong Solution Explorer.
'    f. Thay thế mã trong Form1.vb bằng mã này.
'    g. Để tạo biểu mẫu, hãy thay thế mã trong Form1.Designer.vb bằng mã này.
' 2. Thêm EPDM.Interop.epdm.dll làm tài liệu tham khảo (nhấp chuột phải vào dự án
'    tên trong Solution Explorer, bấm Thêm tham chiếu, bấm 
'    Tập hợp > Framework ở bảng điều khiển bên trái, duyệt đến thư mục trên cùng của 
'    cài đặt SOLIDWORKS PDM Professional của bạn, xác định vị trí và nhấp vào 
'    EPDM.Interop.epdm.dll, bấm Mở, bấm Thêm và bấm Đóng).
' 3. Bấm chuột phải vào EPDM.Interop.epdm trong Tài liệu tham khảo, bấm Thuộc tính và đặt 
'    Nhúng các kiểu tương tác vào Sai để xử lý các phương thức truyền mảng 
'    cấu trúc.
' 4. Kiểm tra một tập tin trong vault.
' 5. Nhấp vào Gỡ lỗi > Bắt đầu gỡ lỗi hoặc nhấn F5.
'
' Hậu điều kiện: 
' 1. Hiển thị hộp thoại Nhận thông tin tệp.
'    a. Chọn chế độ xem vault.
'    b. Nhấp vào Duyệt. 
'       1. Xác định vị trí và chọn tệp đã kiểm xuất trong Điều kiện tiên quyết bước 4.
'       2. Nhấp vào Mở.
'    c. Bấm vào Nhận thông tin.
'    d. Hiển thị hộp thông báo với thông tin về file đã chọn.
'    e. Bấm vào đồng ý.
' 2. Đóng hộp thoại Nhận thông tin tệp.         
'----------------------------------------------------------------------------
 
'Form1.vb
 

Imports System.IO
Imports System.Xml.Serialization
Imports System.Collections
Imports System.Collections.Generic
Imports System.Data
Imports System.Diagnostics
Imports System.Windows.Forms
Imports System.ComponentModel
Imports EPDM.Interop.epdm
 
 
Public Class Form1
 
    Private vault1 As IEdmVault5 = Nothing
 
    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Try
            Dim vault1 As IEdmVault5 = New EdmVault5()
            Dim vault As IEdmVault8 = DirectCast(vault1, IEdmVault8)
            Dim Views As EdmViewInfo() = Nothing
 
            vault.GetVaultViews(Views, False)
            VaultsComboBox.Items.Clear()
            For Each View As EdmViewInfo In Views
                VaultsComboBox.Items.Add(View.mbsVaultName)
            Next
            If VaultsComboBox.Items.Count > 0 Then
                VaultsComboBox.Text = DirectCast(VaultsComboBox.Items(0), String)
            End If
        Catch ex As System.Runtime.InteropServices.COMException
            MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + " " + ex.Message)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
    Public Sub BrowseButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrowseButton.Click
        Try
            ListBox.Items.Clear()
 
            If vault1 Is Nothing Then
                vault1 = New EdmVault5()
            End If
            If Not vault1.IsLoggedIn Then
                'Log into selected vault as the current user
                vault1.LoginAuto(VaultsComboBox.Text, Me.Handle.ToInt32())
            End If
 
            'Set the initial directory in the Open dialog
            OpenFileDialog.InitialDirectory = vault1.RootFolderPath
            'Show the Open dialog
            Dim DialogResult As System.Windows.Forms.DialogResult = Nothing
            DialogResult = OpenFileDialog.ShowDialog()
            'If the user didn't click Open, exit
            If Not (DialogResult = System.Windows.Forms.DialogResult.OK) Then
                Return
            End If
 
            For Each FileName As String In OpenFileDialog.FileNames
                ListBox.Items.Add(FileName)
            Next
        Catch ex As System.Runtime.InteropServices.COMException
            MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + " " + ex.Message)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
 
    Public Sub GetInfo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetInfo.Click
        Try
 
            Dim vault2 As IEdmVault7 = Nothing
            If vault1 Is Nothing Then
                vault1 = New EdmVault5()
            End If
            vault2 = DirectCast(vault1, IEdmVault7)
            If Not vault1.IsLoggedIn Then
                'Log into selected vault as the current user
                vault1.LoginAuto(VaultsComboBox.Text, Me.Handle.ToInt32())
            End If
 
            Dim aFile As IEdmFile17
            aFile = vault2.GetFileFromPath(ListBox.Items(0).ToString())
 
            'Get configurations
            Dim msg As String = "Configurations: " & vbLf
            Dim folder As IEdmFolder5
            folder = vault2.RootFolder
 
            Dim cfgList As EdmStrLst5
            cfgList = aFile.GetConfigurations
 
            Dim pos As IEdmPos5
            pos = cfgList.GetHeadPosition
            Dim cfgName As String
            While Not pos.IsNull
                cfgName = cfgList.GetNext(pos)
                msg = msg & cfgName & vbLf
            End While
 
            msg = msg & vbLf
 
            'Get type of file
            Dim typ As Integer
            typ = aFile.FileType
            msg = msg & "EdmFileType: " & typ & vbLf
 
            msg = msg & vbLf
 
            'Get category of file
            Dim cat As IEdmCategory6
            cat = aFile.Category
            If Not IsNothing(cat) Then
                msg = msg & "Category: " & cat.Name & ", Category ID: " & aFile.CategoryID & vbLf
                msg = msg & vbLf
            End If
 
            'Get local file timestamp
            Dim filePath As String = aFile.Name
            Dim fileDate As Object
            fileDate = aFile.GetLocalFileDate(filePath)
 
            If Not IsNothing(fileDate) Then
                Dim text As String
                text = fileDate
                msg = msg & aFile.GetLocalPath(folder.ID) & " was modified " & text & vbLf
            Else
                msg = msg & "There is no local copy of the file" & vbLf
            End If
 
            msg = msg & vbLf
 
            'Get local version number
            Dim versionNo As Integer
            versionNo = aFile.GetLocalVersionNo(aFile.GetLocalPath(folder.ID))
 
            If versionNo = -1 Then
                msg = msg & "The local copy of " & aFile.Name & " does not match any existing versions" & vbLf
            Else
                Dim versionStr As String
                versionStr = versionNo
                msg = msg & "The local copy of " & aFile.Name & " has version " & versionStr & vbLf
            End If
 
            msg = msg & vbLf
 
            'Get current version
            Dim ver As Integer
            ver = aFile.CurrentVersion
            msg = msg & "Current version: " & ver & vbLf
 
            msg = msg & vbLf
 
            'Get local revision name
            Dim revName As String
            revName = aFile.GetLocalRevisionName(aFile.GetLocalPath(folder.ID))
 
            If revName = "" Then
                msg = msg & "The local copy of " & aFile.Name & " does not match any existing revisions" & vbLf
            Else
                msg = msg & "The local copy of " & aFile.Name & " has revision name " & revName & vbLf
            End If
 
            msg = msg & vbLf
 
            'Get current revision
            revName = aFile.CurrentRevision
            msg = msg & "Current revision: " & revName & vbLf
 
            msg = msg & vbLf
 
            'Get local file size
            Dim fileSize As Integer
            fileSize = aFile.GetLocalFileSize2(aFile.GetLocalPath(folder.ID))
 
            If fileSize = -1 Then
                msg = msg & "The local copy of " & aFile.Name & " is missing" & vbLf
            Else
                msg = msg & "The local copy of " & aFile.Name & " has size " & fileSize & " bytes" & vbLf
            End If
 
            msg = msg & vbLf
 
            'Get current workflow state
            Dim state As IEdmState5
            state = aFile.CurrentState
            msg = msg & "Current workflow state: " & state.Name & vbLf
 
            msg = msg & vbLf
 
            'Get whether the file is checked out
            Dim checkedOut As Boolean
            checkedOut = aFile.IsLocked
            msg = msg & "File is checked out? " & checkedOut & vbLf
            If checkedOut Then
                msg = msg & "Lock path: " & aFile.LockPath & vbLf
                msg = msg & "Locked by: " & aFile.LockedByUser.Name & ", User ID: " & aFile.LockedByUserID & vbLf
                msg = msg & "Locked in: " & aFile.LockedInFolder.Name & ", Folder ID: " & aFile.LockedInFolderID & vbLf
                msg = msg & "Locked on: " & aFile.LockedOnComputer & ", Vault View ID: " & aFile.LockedOnViewID
            End If
 

            
            msg = msg & vbLf

 

             'Get whether the file has cut list items

             Dim hasCutListItems As Boolean
            hasCutListItems = aFile.HasCutlistItems

             msg = msg & "File has cut list items? " & hasCutListItems & vbLf

            msg = msg & vbLf

             'Create a label

             Dim labelID As Integer
            labelID = aFile.CreateLabel("File label", "Label description shows in the history dialog box")

             msg = msg & "File label ID: " & labelID & vbLf


            MessageBox.Show(msg)
 
        Catch ex As System.Runtime.InteropServices.COMException
            MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + " " + ex.Message)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
 
 
End Class

 

Back to top

'Form1.Designer.vb

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
    Inherits System.Windows.Forms.Form
    ''' <summary>
    ''' Required designer variable.
    ''' </summary>
    Private components As System.ComponentModel.IContainer = Nothing
 
    
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso (components IsNot Nothing) Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub
 
#Region "Windows Form Designer generated code"
 
    ''' <summary>
    ''' Required method for Designer support - do not modify
    ''' the contents of this method with the code editor.
    ''' </summary>
    Private Sub InitializeComponent()
        Me.VaultsLabel = New System.Windows.Forms.Label()
        Me.VaultsComboBox = New System.Windows.Forms.ComboBox()
        Me.BrowseButton = New System.Windows.Forms.Button()
        Me.ListBox = New System.Windows.Forms.ListBox()
        Me.GetInfo = New System.Windows.Forms.Button()
        Me.OpenFileDialog = New System.Windows.Forms.OpenFileDialog()
        Me.SuspendLayout()
        '
        'VaultsLabel
        '
        Me.VaultsLabel.AutoSize = True
        Me.VaultsLabel.Location = New System.Drawing.Point(13, 26)
        Me.VaultsLabel.Name = "VaultsLabel"
        Me.VaultsLabel.Size = New System.Drawing.Size(94, 13)
        Me.VaultsLabel.TabIndex = 0
        Me.VaultsLabel.Text = " Select vault view:"
        '
        'VaultsComboBox
        '
        Me.VaultsComboBox.FormattingEnabled = True
        Me.VaultsComboBox.Location = New System.Drawing.Point(16, 42)
        Me.VaultsComboBox.Name = "VaultsComboBox"
        Me.VaultsComboBox.Size = New System.Drawing.Size(121, 21)
        Me.VaultsComboBox.TabIndex = 1
        '
        'BrowseButton
        '
        Me.BrowseButton.Location = New System.Drawing.Point(16, 85)
        Me.BrowseButton.Name = "BrowseButton"
        Me.BrowseButton.Size = New System.Drawing.Size(98, 23)
        Me.BrowseButton.TabIndex = 3
        Me.BrowseButton.Text = "Browse..."
        Me.BrowseButton.UseVisualStyleBackColor = True
        '
        'ListBox
        '
        Me.ListBox.FormattingEnabled = True
        Me.ListBox.HorizontalScrollbar = True
        Me.ListBox.Location = New System.Drawing.Point(16, 114)
        Me.ListBox.Name = "ListBox"
        Me.ListBox.Size = New System.Drawing.Size(259, 43)
        Me.ListBox.TabIndex = 4
        '
        'GetInfo
        '
        Me.GetInfo.Location = New System.Drawing.Point(84, 178)
        Me.GetInfo.Name = "GetInfo"
        Me.GetInfo.Size = New System.Drawing.Size(98, 23)
        Me.GetInfo.TabIndex = 5
        Me.GetInfo.Text = "Get information"
        Me.GetInfo.UseVisualStyleBackColor = True
        '
        'OpenFileDialog
        '
        Me.OpenFileDialog.Title = "Open"
        '
        'Form1
        '
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(317, 215)
        Me.Controls.Add(Me.GetInfo)
        Me.Controls.Add(Me.ListBox)
        Me.Controls.Add(Me.BrowseButton)
        Me.Controls.Add(Me.VaultsComboBox)
        Me.Controls.Add(Me.VaultsLabel)
        Me.Name = "Form1"
        Me.Text = "Get file information"
        Me.ResumeLayout(False)
        Me.PerformLayout()
 
    End Sub
 
#End Region
 
    Friend WithEvents VaultsLabel As System.Windows.Forms.Label
    Friend WithEvents VaultsComboBox As System.Windows.Forms.ComboBox
    Friend WithEvents BrowseButton As System.Windows.Forms.Button
    Friend WithEvents ListBox As System.Windows.Forms.ListBox
    Friend WithEvents GetInfo As System.Windows.Forms.Button
    Friend WithEvents OpenFileDialog As System.Windows.Forms.OpenFileDialog
End Class

Qua đoạn code trên các bạn cũng biết thêm những dữ kiến nào vào form để lấy thông tin rồi chứ. Chúc các bạn thành công với thủ thuật trên.

Đăng nhận xét

Mới hơn Cũ hơn