Minggu, 01 Mei 2011
10
Minggu, 01 Mei 2011
Nurkholish Ardi Firdaus
[VB.NET] Belajar Membuat Program File Scanner
Alhamdulillah, ini adalah postingan pertama saya setelah 1 minggu vakum setelah UN. Sebenarnya UN nya sudah selesai 1 minggu yang lalu, tetapi saya baru menyempatkan posting sekarang. Oke daripada kebanyakan omong, kita mulai saja rapat kali ini ^_^. Sebelumnya saya pernah mempostingkan bagaimana cara membuat Program Virus Scanner Sederhana, tetapi ternyata metode scan nya sangatlah lambat dan merepotkan. Nah kali ini saya akan membuat Program File Scanner yang mana metodenya lumanyan lebih cepat dan tidak memberatkan RAM. Mari kita lihat bagaimana?.
Buatlah proyek baru dengan 1 Form
Buatlah sedemikian rupa seperti ini sesuai keterangan dibawahnya:
Terakhir masukkan source codenya:
Dan setelah saya coba Run, kecepatan scan nya lumayan nih.
Tetapi itu belum ada code yang akan dijalankan pada setiap file yang akan di scan, mungkin jika agan menambahkan code seperti mengambil hash MD5 nya mungkin kecepatan akan semakin lambat tergantung banyaknya tugas yang dilaksanakan.
Nah, sampai sekian dulu. Seperti biasanya jika agan malas membuatnya, agan bisa mendownload source codenya dibawah ini.
Buatlah proyek baru dengan 1 Form
Deklarasi: 1 Form 2 Button 2 TextBox 1 ComboBox 5 Label 1 Timer
Buatlah sedemikian rupa seperti ini sesuai keterangan dibawahnya:
Keterangan 1: ComboBox Name: cboDir DropDownStyle: DropDownList 2: Button Name: cmdBrowse Text: "Browse" 3: Button Name: cmdScan Text: "Scan" 4: TextBox Name: txtCurrDir MultiLine: True ScrollBars: Vertical 5: Label Name: lblSpeed Text: "Speed:" 6: TextBox Name: txtCurrFile 7: Label Name: lblScanned Text: "Scanned:" 8: Label Name: lblUnscanned Text: "Unscanned:" 9: Label Name: Label1 Text: "Current Folder" 10: Label Name: Label2 Text: "Current File" 11: Timer Name: tmrSpeedo Enabled: False Interval: 1000
Terakhir masukkan source codenya:
Source Code Form1
' Program file scanner sederhana
' coded by nurkholish ardi f
' www.cr0wja.co.cc
Imports Microsoft.VisualBasic.FileSystem
Imports Microsoft.VisualBasic.Strings
Public Class Form1
Dim Scanned As UInt64
Dim Unscanned As UInt64
Dim ScannedBefore As UInt64
Dim RunScan As Boolean
Private Sub cmdScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdScan.Click
If cboDir.Text = "" Then Exit Sub
If cmdScan.Text = "Scan" Then
Turn(True)
ScanDir(cboDir.Text, True)
If cmdScan.Text = "Stop" Then ShowRes()
Else
ShowRes()
End If
Turn(False)
End Sub
Private Sub Turn(ByVal switch As Boolean)
Scanned = 0
Unscanned = 0
ScannedBefore = 0
tmrSpeedo.Enabled = switch
RunScan = switch
txtCurrDir.Text = ""
txtCurrFile.Text = ""
lblScanned.Text = "Scanned: "
lblSpeed.Text = "Speed: "
cmdBrowse.Enabled = Not switch
cboDir.Enabled = Not switch
If switch Then
cmdScan.Text = "Stop"
Else
cmdScan.Text = "Scan"
End If
End Sub
Private Sub ShowRes()
MsgBox("Done, " & Scanned & " file(s) scanned, " & Unscanned & " file(s) unscanned", MsgBoxStyle.Information, "Done")
End Sub
Private Sub cmdBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBrowse.Click
Dim OpenDirDlg As New FolderBrowserDialog
With OpenDirDlg
.ShowDialog()
If .SelectedPath <> Nothing Then
cboDir.Items.Add(.SelectedPath)
cboDir.Text = .SelectedPath
End If
End With
OpenDirDlg = Nothing
End Sub
Private Sub ScanDir(ByVal dirpath As String, ByVal subdirs As Boolean)
If Not RunScan Then Exit Sub
Application.DoEvents()
If Strings.Right(dirpath, 1) <> "\" Then dirpath &= "\"
Dim CurrFile As String
Dim value As Int32
CurrFile = Microsoft.VisualBasic.Dir(dirpath)
Do While CurrFile <> ""
value = ScanFile(dirpath & CurrFile)
Scanned += value
Unscanned += IIf(value = 1, 0, 1)
txtCurrFile.Text = CurrFile
txtCurrDir.Text = dirpath
lblScanned.Text = "Scanned: " & Scanned & " file(s)"
lblUnscanned.Text = "Unscanned: " & Unscanned & " file(s)"
CurrFile = Microsoft.VisualBasic.Dir
Loop
If subdirs Then
For Each SubDir As String In FileIO.FileSystem.GetDirectories(dirpath, FileIO.SearchOption.SearchTopLevelOnly)
Try
ScanDir(SubDir, True)
Catch ex As Exception
End Try
Next
End If
End Sub
Private Function ScanFile(ByVal filepath As String) As Int32
If Not RunScan Then Exit Function
Application.DoEvents()
Try
Dim OpenFile As New IO.StreamReader(filepath)
'==========================================
' Disini agan bisa menambahkan code yang selanjutnya, setelah akses stream file reader terbuka
' bisa berupa mencari bit pada file, mendapatkan hash md5 nya atau sebagainya
' sesuai keinginan agan
'==========================================
OpenFile.Close()
Return 1
Catch ex As Exception
' jika terjadi error
Return 0
End Try
End Function
Private Sub tmrSpeedo_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrSpeedo.Tick
If ScannedBefore = 0 Then
ScannedBefore = Scanned
Else
lblSpeed.Text = "Speed: " & (Scanned - ScannedBefore) & " file/s"
ScannedBefore = Scanned
End If
End Sub
End ClassDan setelah saya coba Run, kecepatan scan nya lumayan nih.
Tetapi itu belum ada code yang akan dijalankan pada setiap file yang akan di scan, mungkin jika agan menambahkan code seperti mengambil hash MD5 nya mungkin kecepatan akan semakin lambat tergantung banyaknya tugas yang dilaksanakan.
Nah, sampai sekian dulu. Seperti biasanya jika agan malas membuatnya, agan bisa mendownload source codenya dibawah ini.
Langganan:
Komentar (Atom)




