Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
ILamerok
0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 60
#1

Исключения в поиске файлов по маскам

14.07.2018, 04:53. Просмотров 793. Ответов 4
Метки нет (Все метки)

Есть поиск файлов по маскам : Код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
            Dispatcher.BeginInvoke(new ThreadStart(delegate { listBox1.Items.Clear(); }));
            Dispatcher.BeginInvoke(new ThreadStart(delegate { Index.IsEnabled = false; }));
 
            string[] Filter = { @"\.[aA][mM][cC]", @"\.[aA][hH][kK]", @"[rR][uU][sS][tT].{0,}\.(exe|rar)$", @"[hH][aA][kK][sS].{0,}\.(exe|rar)$", @"[gG][iI][tT].{0,}\.(exe|rar)$", @"[bB][oO][xX].{0,}\.(exe|rar)$", "HackLoader.dll", "RustInterceptor.dll", "LoaderAPIDll.dll", @"\.[aA][mM][cC][2]", @"\.[mM][nN][gG]", @"\.[mM][nN][gG][2]", @"\.[mM][eE][fF][xX]", "Bloody6.exe", "Bloody5.exe", "Bloody.exe", "OscarEditor.exe", "LegitHelpers.exe","LegitHelper.exe","LegitHelpers.MacroEngine.exe", "LegitHelper.MacroEngine.exe", @"[aA][uU][tT]oO][hH][oO][tT][kK][eE][yY].{0,}\.(exe|rar)$", "me_core.dll", "Макроскин.exe","MacroEffect.exe","MacrosEffect.exe","haksclub.exe","GamingMouse.exe", "countMacro.dat"};
            string line;
            using (FileStream f = new FileStream(System.IO.Path.GetTempPath()+"//INDEX_C.txt", FileMode.Open))
 
            {
                using (StreamReader sr = new StreamReader(f, Encoding.UTF8))
                    while ((line = sr.ReadLine()) != null)
                    {
                        for (int i = 0; i < 9; i++)
                        {
                            string FilterKey = Filter[i];
                            if (Regex.IsMatch(line, FilterKey)) Dispatcher.BeginInvoke(new ThreadStart(delegate { listBox1.Items.Add(line); }));
 
                        }
                    }
            }
 
            Dispatcher.BeginInvoke(new ThreadStart(delegate { Index.IsEnabled = true; }));
 
        }
Выводит подозрительные файлы в лист бокс.Как сделать исключения,чтобы например папки в которых есть название "Microsoft" не выводились
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2018, 04:53
Ответы с готовыми решениями:

Перенос файлов по нескольким маскам
Нужно перести файлы в другую директорию по нескольким маскам/ Написала так...

Поиск файлов по нескольким маскам в папках и подпапках
как осуществить поиск файлов сразу по нескольким маскам в папках и подпапках ?...

Общий метод переименования файлов каталога по маскам
Здравствуйте, уважаемые! В связи с изменением имени приходящих файлов, нужно...

Копирование файлов по маскам, записанным в текстовом файле
Доброе время суток, уважаемые. Передо мной стоит следующая задача: Есть...

Удаление файлов по нескольким маскам из нескольких каталогов
Помогите со скриптом. Задача следующая. Имеется некая программа к которой...

4
Casper-SC
Эксперт .NET
3616 / 1825 / 355
Регистрация: 27.03.2010
Сообщений: 5,134
Записей в блоге: 1
14.07.2018, 20:42 #2
Лучший ответ Сообщение было отмечено ILamerok как решение

Решение

Что-то вроде такого должно быть, а не смесь из работы с UI и твоего алгоритма фильтрации. И переменные обычно с маленькой буквы именуются. Или хотя бы везде в едином стиле.

Работу не проверял.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Threading;
using System.Windows;
 
namespace WpfListBox
{
    public partial class MainWindow : Window
    {
        private readonly Logic _logic;
        private CancellationTokenSource _cts;
 
        public MainWindow()
        {
            InitializeComponent();
 
            string[] filter =
            {
                @"\.[aA][mM][cC]", @"\.[aA][hH][kK]", @"[rR][uU][sS][tT].{0,}\.(exe|rar)$",
                @"[hH][aA][kK][sS].{0,}\.(exe|rar)$", @"[gG][iI][tT].{0,}\.(exe|rar)$",
                @"[bB][oO][xX].{0,}\.(exe|rar)$", "HackLoader.dll", "RustInterceptor.dll", "LoaderAPIDll.dll",
                @"\.[aA][mM][cC][2]", @"\.[mM][nN][gG]", @"\.[mM][nN][gG][2]", @"\.[mM][eE][fF][xX]", "Bloody6.exe",
                "Bloody5.exe", "Bloody.exe", "OscarEditor.exe", "LegitHelpers.exe", "LegitHelper.exe",
                "LegitHelpers.MacroEngine.exe", "LegitHelper.MacroEngine.exe",
                @"[aA][uU][tT]oO][hH][oO][tT][kK][eE][yY].{0,}\.(exe|rar)$", "me_core.dll", "Макроскин.exe",
                "MacroEffect.exe", "MacrosEffect.exe", "haksclub.exe", "GamingMouse.exe", "countMacro.dat"
            };
 
            _logic = new Logic(filter, new[] { "Microsoft" }, new[] { "mics.exe" });
            _logic.FiltrationCompleted += Logic_FiltrationCompleted;
            _logic.MatchFound += Logic_MatchFound;
        }
 
        private void Logic_MatchFound(object sender, InfoEventArgs e)
        {
            listBox1.Items.Add(e.Result);
            if (e.SuspiciousFile)
            {
                MessageBox.Show(this, "Аляяяярм!!! Подозрительный файл!");
            }
        }
 
        private void Logic_FiltrationCompleted(object sender, EventArgs e)
        {
            index.IsEnabled = true;
        }
 
        private async void StartFilteringButton_Click(object sender, RoutedEventArgs e)
        {
            if (_cts != null)
            {
                return;
            }
 
            listBox1.Items.Clear();
            index.IsEnabled = false;
 
            _cts = new CancellationTokenSource();
 
            try
            {
                await _logic.DoWorkAsync(_cts.Token);
            }
            catch (OperationCanceledException ex)
            {
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString());
            }
            finally
            {
                _cts.Dispose();
                _cts = null;
            }
        }
 
        private void StopFilteringButton_Click(object sender, RoutedEventArgs e)
        {
            _cts?.Cancel();
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
 
namespace WpfListBox
{
    public sealed class Logic
    {
        private readonly string[] _regExpressions;
        private readonly string[] _exceptions;
        private readonly string[] _suspiciousFiles;
 
        private readonly SynchronizationContext _syncContext;
 
        public Logic(string[] regExpressions, string[] exceptions, string[] suspiciousFiles)
        {
            _regExpressions = regExpressions;
            _exceptions = exceptions;
            _suspiciousFiles = suspiciousFiles;
 
            _syncContext = SynchronizationContext.Current ?? new SynchronizationContext();
        }
 
        /// <summary> Найдено совпадение. </summary>
        public event EventHandler<InfoEventArgs> MatchFound;
 
        /// <summary> Фильтрация завершена. </summary>
        public event EventHandler<EventArgs> FiltrationCompleted;
 
        public async Task DoWorkAsync(CancellationToken cancellationToken)
        {
            await Task.Run(() =>
            {
                using (FileStream fs = new FileStream(Path.Combine(Path.GetTempPath(), "INDEX_C.txt"), FileMode.Open))
                {
                    using (StreamReader sr = new StreamReader(fs, Encoding.UTF8))
                    {
                        string line;
                        while ((line = sr.ReadLine()) != null)
                        {
                            for (int i = 0; i < _regExpressions.Length; i++)
                            {
                                cancellationToken.ThrowIfCancellationRequested();
 
                                string filterKey = _regExpressions[i];
                                if (Regex.IsMatch(line, filterKey))
                                {
                                    bool found = FindInCollection(line, _exceptions);
                                    if (!found)
                                    {
                                        bool suspiciousFile = FindInCollection(line, _suspiciousFiles);
                                        OnMatchFound(new InfoEventArgs(suspiciousFile, line));
                                    }
                                }
                            }
                        }
                    }
                }
 
                OnFiltrationCompleted();
            }, cancellationToken);
        }
 
        private bool FindInCollection(string line, string[] collection)
        {
            bool found = false;
            for (int j = 0; j < collection.Length; j++)
            {
                if (line.Contains(collection[j]))
                {
                    found = true;
                }
            }
 
            return found;
        }
 
        private void OnFiltrationCompleted()
        {
            _syncContext.Post((d) =>
            {
                FiltrationCompleted?.Invoke(this, EventArgs.Empty);
            }, null);
        }
 
        private void OnMatchFound(InfoEventArgs e)
        {
            _syncContext.Post((d) =>
            {
                MatchFound?.Invoke(this, e);
            }, null);
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
 
namespace WpfListBox
{
    public class InfoEventArgs : EventArgs
    {
        public InfoEventArgs(bool suspiciousFile, string result)
        {
            SuspiciousFile = suspiciousFile;
            Result = result;
        }
 
        /// <summary>
        /// Подозрительный файл.
        /// </summary>
        public bool SuspiciousFile { get; private set; }
 
        public string Result { get; private set; }
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<Window x:Class="WpfListBox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:WpfListBox"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="800"
        Height="450"
        mc:Ignorable="d">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="10*" />
            <RowDefinition Height="1*" />
        </Grid.RowDefinitions>
 
        <ListBox x:Name="listBox1" Margin="10,10,10,0" />
 
        <Button Grid.Row="1"
                Width="110"
                Height="20"
                Margin="10,0,0,8"
                HorizontalAlignment="Left"
                VerticalAlignment="Bottom"
                Click="StartFilteringButton_Click"
                Content="Старт" />
 
        <Button Grid.Row="1"
                Width="110"
                Height="20"
                Margin="137,0,0,8"
                HorizontalAlignment="Left"
                VerticalAlignment="Bottom"
                Click="StopFilteringButton_Click"
                Content="Стоп" />
    </Grid>
</Window>
1
ILamerok
0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 60
15.07.2018, 00:24  [ТС] #3
Casper-SC, Спасибо большое,не первый раз выручаете!

Добавлено через 1 час 51 минуту
Casper-SC, Не по теме,не подскажите,как сделать чтобы файлы с определенным названием(или расширением) подсвечивались в listbox1?
0
Casper-SC
Эксперт .NET
3616 / 1825 / 355
Регистрация: 27.03.2010
Сообщений: 5,134
Записей в блоге: 1
15.07.2018, 08:33 #4
Лучший ответ Сообщение было отмечено ILamerok как решение

Решение

ILamerok, вообще тебе нужно гуглить, как использовать DataTemplateSelector

https://professorweb.ru/my/WPF/binding_and_styles_WPF/level20/20_4.php
https://stackoverflow.com/questions/...644414#5644414

Добавлено через 1 минуту
По первой ссылке есть класс
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class CategoryHighlightTemplateSelector : DataTemplateSelector
{
        public DataTemplate EconomyMiddleClassDataTemplate { get; set; }
        public DataTemplate BuisnessPremiumClassDataTemplate { get; set; }
 
        public override DataTemplate SelectTemplate(object item, DependencyObject container)
        {
            CarTable car = (CarTable)item;
 
            switch (car.CategoryID)
            {
                case 1:
                    return EconomyMiddleClassDataTemplate;
                case 2:
                    return EconomyMiddleClassDataTemplate;
                case 3:
                    return BuisnessPremiumClassDataTemplate;
                case 4:
                    return BuisnessPremiumClassDataTemplate;
                default:
                    return null;
            }
        }
}
Тебе нужно вместо идентификатора вычислять какой шаблон подставлять распарсив строку.
1
ILamerok
0 / 0 / 0
Регистрация: 02.06.2018
Сообщений: 60
20.07.2018, 20:11  [ТС] #5
Casper-SC, Не подскажите,вот есть код
C#
1
2
3
4
5
6
7
8
private void Logic_MatchFound(object sender, InfoEventArgs e)
        {
            listBox1.Items.Add(e.Result);
            if (e.SuspiciousFile)
            {
                MessageBox.Show(this, "Аляяяярм!!! Подозрительный файл!");
            }
        }
Мне нужно сделать проверку на мышку,а именно на установленную программу для мышки,как сделать,чтобы :
Если находило "Bloody6.exe", "Bloody5.exe", "BridgeToUser.exe", то выдавало "Мышка Bloody"
А если "OscarEditor.exe", - то "Мышка X7"
0
20.07.2018, 20:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2018, 20:11

Сбор файлов по маскам со всех дисков и их архивирование в exe-файл на флешку
Золотые вы мои друзя. Пытаюсь реализовать бат файл с таким набором. Сбор...

Феномен, при поиске файлов
Феномен при поиске файло Начинаю искать файлы на диске где установлена...

Исключение при поиске файлов
Здравствуйте, пишу программу для поиска всех txt файлов на диске. написал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru