Просмотр какие папки сканирует программа с выводом пути в Label - Visual Basic .NET
Формулировка задачи:
Всех приветствую.
Есть к примеру такой код:
Поиск по имени файла. При поиске программа как бы зависает.
Суть вопроса:
При выборе диска "C:" а искомый файл находиться например "C:\тест\тест.txt". Как мне допустим в Label1 увидеть какие в данный момент проверяет программа папки (как в антивирусниках строка сканирования например)?
Честно я запарился не магу нечего найти (может не правильно запрашиваю у поиска )
Листинг программы
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Try
- Dim FBD3 As New FolderBrowserDialog
- If FBD3.ShowDialog = Windows.Forms.DialogResult.OK Then
- Button1.Enabled = False
- TextBox2.Text = FBD3.SelectedPath
- TextBox4.Text = IO.Directory.GetFiles(FBD3.SelectedPath, TextBox3.Text, IO.SearchOption.AllDirectories)(0)
- Button1.Enabled = True
- End If
- Catch ex As Exception
- End Try
- End Sub
Решение задачи: «Просмотр какие папки сканирует программа с выводом пути в Label»
textual
Листинг программы
- Public Class Form1
- Dim files() As String
- Private Sub Search(e As System.ComponentModel.DoWorkEventArgs, ByVal fold As String, ByVal mask As String, ByVal Recur As Boolean)
- Dim stack As Stack(Of String) = New Stack(Of String)
- stack.Push(fold)
- Do 'Цикл начинается
- If BackgroundWorker1.CancellationPending Then 'Если нажимаем кнопку отмены ТО-
- e.Cancel = True 'Возвращаем значение для отмены события "BackgroundWorker1" которое проверяется в "BackgroundWorker1_RunWorkerCompleted"
- Exit Sub
- End If
- fold = stack.Pop() 'Если мы не ищем файлы в подпапках то в "stack" будет одна запись и цикл закончится быстро
- Try
- files = System.IO.Directory.GetFiles(fold, mask)
- Label1.Text = fold ' в label1 отображаем текущую папку, в которой происходит поиск
- If files.Count >= 1 Then
- TextBox2.Text = files(0) 'при первом совпадении с маской поиска результат заносится в textbox2 и поиск прекращаается
- Exit Sub
- End If
- If Recur Then 'Если необходимо сканировать подпапки
- For Each folder In IO.Directory.GetDirectories(fold)
- stack.Push(folder)
- Next
- End If
- Catch ex As Exception
- End Try
- Loop Until stack.Count = 0
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim FBD3 As New FolderBrowserDialog
- If FBD3.ShowDialog = Windows.Forms.DialogResult.OK Then
- TextBox1.Text = FBD3.SelectedPath ' выбираем папку и присваиваем textbox1
- If BackgroundWorker1.IsBusy = False Then
- BackgroundWorker1.RunWorkerAsync() 'если BackgroundWorker1 ничем не занят, то мы его запускаем
- End If
- End If
- End Sub
- Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
- Search(e, TextBox1.Text, "lnk_remake.exe", True) ' вызов процедуры поиска
- ' TextBox1.Text - где ищем
- ' "lnk_remake.exe" - имя файла с расширением, который ищем, можно использовать маску, к примеру, чтобы найти все .txt файлы, необходимо будет указать маску "*.txt"
- End Sub
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- CheckForIllegalCrossThreadCalls = False
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д