Поиск по этому блогу

пятница, 4 мая 2012 г.

Получение информации о ПК

Собрал несколько исходных кодов для получения информации о ПК в консольном приложении.
В коде присутствует System.Management. Чтобы его добавить нужно пройти в Solution Explorer, найти там в списке своей программы References, нажать правой кнопкой мыши ->Add->выбрать NET и найти там  System.Management.
В общем сами коды:

Список всех активных процессов в системе

ManagementObjectSearcher searcher =
        new ManagementObjectSearcher("root\\CIMV2",
           "Select Name, CommandLine From Win32_Process");

            foreach (ManagementObject instance in searcher.Get())
            {
                Console.WriteLine("{0}", instance["Name"]);
            }
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey();

четверг, 3 мая 2012 г.

Копирование папки и файлов

Задача: скопировать папку и все файлы, которые находятся в ней.
Решение:

static void Main(string[] args)
        {
            
            CopyFolder( @"d:\__autoSeo_results\temptest", @"d:\__autoSeo_results\tempout" );
            Console.ReadLine();
        }    
        static public void CopyFolder( string sourceFolder, string destFolder )
        {
            // Directory.Exists - Определяет, указывает ли заданный путь на существующий каталог на диске
            if (!Directory.Exists( destFolder ))
                Directory.CreateDirectory( destFolder );
            string[] files = Directory.GetFiles( sourceFolder );
            //Directory.GetFiles - Возвращает имена файлов (с указанием пути к ним) в указанном каталоге
            foreach (string file in files)
            {
                string name = Path.GetFileName( file );
                string dest = Path.Combine( destFolder, name );
                File.Copy( file, dest );
            }
            string[] folders = Directory.GetDirectories( sourceFolder );
            foreach (string folder in folders)
            {
                string name = Path.GetFileName( folder );
                string dest = Path.Combine( destFolder, name );
                CopyFolder( folder, dest );
            }
        }

Перебор символов

Как - то читал статью по брутфорсу и задумался: "А как делать перебор символов?" Долго искал примеры, но они были очень громоздки, и мне их было сложно понять. Вот на днях нашёл более простой пример. Программа последовательно перебирает все возможные комбинации символов и выводит их на экран.


public static IEnumerable EnumLetter(string alphabet)
        {
            foreach (char a in alphabet)
                yield return "" + a;
        }
        public static IEnumerable EnumWord(IEnumerable child, string alphabet)
        {
            foreach (string a in child)
                foreach (string b in EnumLetter(alphabet))
                    yield return "" + a + b;
        }
        static void Main(string[] args)
        {
            
            
            const string alphabet = "abcdefghijklmnopqrstuvwxyz";
            int length = 5;

            IEnumerable list = EnumLetter(alphabet);
            for (int i = 0; i < length - 1; i++)
                list = EnumWord(list, alphabet);
            foreach (string a in list)
                Console.WriteLine(a);
        }
Смысл такой - есть строка "ааааа", программа начинает перебирать символы с последнего символа в этой строке. Т.е. было "ааааа", стало "ааааб", затем "аааав" и так делее. Перебираются все символы в строке.

Получить список избранных ссылок

Нашёл пример как вывести на консоль список избранных ссылок из папки Favorite. Т.е. выводит список ссылок, которые мы сохранили в избранное в Internet Explorer.
Сам код:


const string urlConst = "URL=";
            //указываем путь до папки Избранное
            string pathFavorites = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);
            // Получаем список всех файлов, включая файлы в подпапках
            foreach (String favorite in Directory.GetFiles(pathFavorites, "*", SearchOption.AllDirectories))
            {
                using (StreamReader file = new StreamReader(favorite))
                {
                    while (!file.EndOfStream)
                    {
                        string line = file.ReadLine();

                        if (line.StartsWith(urlConst))
                        {
                            string url = line.Substring(urlConst.Length);
                            string name = Path.GetFileNameWithoutExtension(favorite);
                            Console.WriteLine("NAME='{0}', URL = '{1}'", name, url);
                            break;
                        }
                    }
                }
            }
            Console.ReadKey();

воскресенье, 29 апреля 2012 г.

Про System.IO.Path

Класс .NET System.IO.Path имеет множество статических методов для работы с файлами и путями, которые должны облегчить жизнь)


// Объединяет компоненты имени и пути в один путь
string fullPath = Path.Combine(workingDirectory, fileName);

//если у вас есть полное имя файла, содержащее путь,
string fullPath = "c:\\Downloads\\output\\t0.html";
 
// возвращает "c:\"
string pathPart = Path.GetPathRoot(fullPath);
 
// возвращает "t0.html"
string filePart = Path.GetFileName(fullPath);
 
// возвращает ".html"
string extPart = Path.GetExtension(fullPath);
 
// возвращает "c:\downloads\output"
string dirPart = Path.GetDirectoryName(fullPath);

Генератор паролей на основе RNGCryptoServiceProvider

Увидел в одном блоге, интересный пример генератора паролей. Мне лично такие варианты ещё не попадались. Вот  решил его разместить у себя в блоге.
На форму нужно кинуть Label, 2 TextBox'a, 1 Buttom. Размещаем в любом порядке, а дальше код.


private void button1_Click(object sender, EventArgs e)
        {
            if (Convert.ToInt32(textBox1.Text) < 35)
            {
                try
                {
                    //try говорит о ошибке в определённом куске, чтобы её отловить
                    // Вызов функции или выполнение каких-то иных
                    // действий, которые могут генерировать исключение
                    textBox2.Clear();
                    byte[] temp = Generator.RollDice(Convert.ToInt32(textBox1.Text));
                    for (int i = 0; i < temp.Length; i++)
                    {
                        textBox2.Text += (char)temp[i];
                    }
                }
                catch (Exception ex)
                {
                    //catch - выводит сообщение о ошибке возникшей в try
                    // Сюда управление передается в случае, когда в блоке
                    // try сгенерировано исключение — в самом ли блоке, в
                    // функции, которая в нем вызывается, в функции,
                    // которая вызывается функцией, вызванной в try-блоке
                    // и так далее — словом, где угодно. Объект Exception
                    // описывает ошибку
                    MessageBox.Show(ex.Message);
                }
            }
            else
                MessageBox.Show("Введите число меньше 35!!!");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //по умолчанию в текстбоксе будет стоять значение 16
            textBox1.Text = "16";
        }

Подключение новой формы

Нашёл в инете пример как подключить новую (вторую форму или третью и тд.). Нужно, когда программа подразумевает несколько окон (форм).
P.s. Я понимаю, что это  можно прочесть на MSDN, но проще иметь такие вещи под рукой, а не искать. (у меня лично трудности с поиском на MSDN)


private void button1_Click(object sender, EventArgs e)
{
 Form2 f2 = new Form2(); // создаем
 f2.ShowDialog(); // показываем
}