Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Заблокирован

Отображение прогресса метода в ProgressBar

21.05.2015, 01:16. Показов 3089. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот у меня идет перебор паролей в textBox1 и мне надо чтобы прогресс то есть как далеко уже перебор идет, отображался в прогресс баре, и чтобы показывал проценты до 6 цифр( в прогресс баре) после запятой.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2015, 01:16
Ответы с готовыми решениями:

Отображение прогресса в ProgressBar при копировании каталога
Доброе время суток! Копирую файлы из одного каталога в другой таким способом: FileSystem.CopyDirectory(sourcePath, destinationPath,...

Отображение общего прогресса работы нескольких потоков на одном progressbar
В программе параллельно работают три потока, каждый из которых выполняет одинаковый объем работы, но время выполнения может отличаться. мне...

Отображение прогресса операции
Здравствуйте, подскажите как реализовать. Есть progressBar в котором нужно отобразить статус завершения, я удаляю файлы из папки,...

18
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
21.05.2015, 12:01
komra23,
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Threading;
using System.Windows.Forms;
 
namespace WindowsFormsApplication285
{
    public partial class Form1 : Form
    {
        private PassEnumerator passEnum;
        private string currentPass;
        bool hacked = false;
        private string targetPass = "dggea1";
 
        public Form1()
        {
            InitializeComponent();
 
            var image = Image.FromStream(new WebClient().OpenRead("http://i.**********/pQT0l.jpg"));
            Size = image.Size;
            StartPosition = FormStartPosition.Manual;
            FormBorderStyle = FormBorderStyle.FixedToolWindow;
            new PictureBox() {Parent = this, Dock = DockStyle.Fill, Image = image}.Paint += pb_Paint;
 
            passEnum = new PassEnumerator("0123456789qwertyuiopasdfghjklzxcvbnm", 6);
 
            new Thread(GeneratePass).Start();
        }
 
        void GeneratePass()
        {
            foreach (var pass in passEnum.Enumerate())
            {
                currentPass = new string(pass);
                if (currentPass == targetPass)
                {
                    hacked = true;
                    break;
                }
            }
        }
 
        void pb_Paint(object sender, PaintEventArgs e)
        {
            var rect = new Rectangle(450, 300, 400, 70);
            using (var brush = new SolidBrush(Color.FromArgb(160, 0, 255, 0)))
                e.Graphics.FillRectangle(brush, rect);
            e.Graphics.DrawRectangle(Pens.Lime, rect);
 
            using (var font = new Font(FontFamily.GenericMonospace, 40, FontStyle.Bold))
            {
                e.Graphics.DrawString(currentPass, font, Brushes.White, rect.Location.X + 10, rect.Location.Y + 10);
 
                if (!hacked)
                {
                    var r = new Rectangle(rect.Left + 20, rect.Bottom + 20, rect.Width - 40, 20);
                    ProgressBarRenderer.DrawHorizontalChunks(e.Graphics, new Rectangle(r.Left, r.Top, (int)(1f * r.Width * passEnum.Processed / passEnum.TotalCount), r.Height));
                    using (var brush = new SolidBrush(Color.FromArgb(160, 0, 155, 0)))
                        e.Graphics.FillRectangle(brush, r);
                    e.Graphics.DrawRectangle(Pens.Lime, r);
                }
                else
                {
                    var r = new Rectangle(rect.Left + 20, rect.Bottom + 20, rect.Width - 40, 55);
 
                    using (var brush = new SolidBrush(Color.FromArgb(160, 0, 155, 0)))
                        e.Graphics.FillRectangle(brush, r);
                    e.Graphics.DrawRectangle(Pens.Lime, r);
                    e.Graphics.DrawString("Hacked!", font, Brushes.White, r);
                }
            }
 
            (sender as Control).Invalidate(rect);
            Text = currentPass;
        }
    }
 
    class PassEnumerator
    {
        private int length;
        private char[] chars;
        private char[] result;
        private int[] indexes;
 
        public long TotalCount;
        public long Processed;
 
        public PassEnumerator(string charStr, int length)
        {
            this.length = length;
            chars = charStr.ToArray();
            result = new char[length];
            indexes = new int[length];
 
            TotalCount = 1;
 
            for (var j = 0; j < length; j++)
            {
                result[j] = chars[0];
                TotalCount *= chars.Length;
            }
        }
 
        public IEnumerable<char[]> Enumerate()
        {
            int i = 0;
 
            do
            {
                yield return result;
                Processed++;
 
                for (i = 0; i < length; i++)
                {
                    var ind = indexes[i];
                    ind++;
                    if (ind >= chars.Length)
                    {
                        indexes[i] = 0;
                        result[i] = chars[0];
                    }
                    else
                    {
                        indexes[i] = ind;
                        result[i] = chars[ind];
                        break;
                    }
                }
 
            } while (i < length);
        }
    }
}


4
21.05.2015, 12:25

Не по теме:

Storm23, ад! :D

0
63 / 69 / 22
Регистрация: 28.04.2015
Сообщений: 194
Записей в блоге: 1
21.05.2015, 12:29
Не по теме:
Storm23,
0
Заблокирован
15.07.2015, 23:26  [ТС]
У меня идет перебор паролей в textBox4 и мне надо чтобы прогресс то есть как далеко уже перебор идет, отображался в прогресс баре, и чтобы показывал проценты до 6 цифр( в прогресс баре) после запятой.
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
16.07.2015, 19:45
Сколько знаков в пароле
1
16.07.2015, 19:54

Не по теме:

Цитата Сообщение от zna926 Посмотреть сообщение
Сколько знаков в пароле
Будем надеяться, что не 40 :D

0
Заблокирован
17.07.2015, 00:26  [ТС]
zna926, tezaurismosis, пароль длина 6 знаков a-z A-Z 0-9. Комб. может быть любая...
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
17.07.2015, 13:26
Уточняю условие:
Количество переборов - это число сочетаний из 62 элементов по 6. Всего будет 61 474 519.
Из условия неясно, есть ли счетчик выполненных переборов?
0
Заблокирован
17.07.2015, 16:11  [ТС]
zna926, нет никакого счетчика есть после private ASYNC void и в конце await Task.Delay(1);
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
17.07.2015, 17:53
Оnкуда будет получать данные ProgressBar, чтобы показать какая часть перебора паролей уже выполнена?
0
17.07.2015, 18:02

Не по теме:

Цитата Сообщение от zna926 Посмотреть сообщение
Количество переборов - это число сочетаний из 62 элементов по 6. Всего будет 61 474 519.
мож ошибаюсь, но по моим скромным подсчетам это будет 62^6 = 56 800 235 584

0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
17.07.2015, 18:49
Увы ошибаетель, подобной формулы там и близко нет. Для данной задачи число сочетаний равно

c = 62*61*60* 59*58*57/1*2*3*4*5*6.
Эта формула и в школьном курсе и в Google
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
17.07.2015, 19:15
komra23, вам уже указали направление - максимальное количество переборов для достижения результата - 61 474 519, значит это количество можно принять за 100%, значит на каждые 600 000 итераций будем прибавлять по 1 проценту в ProgressBar.
0
Заблокирован
17.07.2015, 20:46  [ТС]
zna926, не правильно, мне нужен код который будет выполнятся...данные с textBox4.Text
nedel, верно, 62*62*62*62*62*62=56 800 235 584(62^6)
Цитата Сообщение от zna926 Посмотреть сообщение
c = 62*61*60* 59*58*57/1*2*3*4*5*6.
Эта формула и в школьном курсе
И не только в школьное но и в вузе если есть предмет такой как теория вероятности и математическая статистика
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
17.07.2015, 23:01
Komra! Это фантазия, такой формулы в комбинаторике нет. И конкретную ссылку вряд ли найдете. А в данном случае речь идет о размещениях, т.к. в пароле комбинация ав и ва не эквивалентны. Число размещений - около 50 миллиардов. Ранее я ошибочно привел данные для для сочетаний.
И каким образом такое количество данных, как Вы пишете, будете вбрасывать в текстбокс.
Резюме: условия никак не продуманы и в таком виде задача не может быть решена.
0
Заблокирован
18.07.2015, 00:32  [ТС]
tezaurismosis, блин не то.....
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,095
18.07.2015, 13:18
Цитата Сообщение от zna926 Посмотреть сообщение
Увы ошибаетель, подобной формулы там и близко нет
Цитата Сообщение от zna926 Посмотреть сообщение
Это фантазия, такой формулы в комбинаторике нет. И конкретную ссылку вряд ли найдете
Основные формулы комбинаторики:
Теорема 4. Общее количество различных наборов при выборе k элементов из n с возвращением и с учётом порядка равняется n^k.
1
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
19.07.2015, 20:47
komra23 сделал задачу другим способом.Все работает в автомате. Текстбоксы не нужны и мд5 тоже.
Сделал строковый массив из 22 символов .по 6 первых букв алфавита (большие и малые) и 10 цифр в строковом виде
Перебор пароля - в автомате. Теоретически полный перебор - 53 771 360 раз.
Пароль генерирутся из случайных 6 символов указанных символов. При больших границах , уходит мтого времени,
работает прогрессбар
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.07.2015, 20:47
Помогаю со студенческими работами здесь

Отображение прогресса скачивания файла
Доброго, делаю программку по скачиванию файлов с сервера все легально и чисто, в общем имеется три файла я сделал на винформе 3 кнопки и 3...

Загрузка файла на сервер с использованием BackgroundWorker - отображение прогресса
Добрый вечер! Знаю, подобных тем полно, но ответ на свой вопрос я так и не нашел. Я через протокол SFTP заливаю выбранный файл....

Progressbar ход выполнения метода
У меня есть большой метод, который создает БД. Как мне показать ход выполнения метода в ProgressBar?

Заполнение ProgressBar при выполнении метода
Здравствуйте! Возник такой вопрос. Существует два класса в одном распаковывается архив а в другом парсится XML. Из-за большого объема...

Сравнение и отображение в progressbar
Добрый вечер. У меня есть 2 textbox'а и progressbar, можно сделать сравнение значений этих двух textbox'ов и вывести это в progressbar. ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru