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 Class
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.
Langganan:
Postingan (Atom)