Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2015, 15:24   #1
Елисей
 
Регистрация: 19.04.2011
Сообщений: 4
По умолчанию Работа с USB

Добрый день, имеется код, который при "втыкании" флешки в USB записывает в лог файл какая флешка была воткнута, но! Если воткнуть первую флешку, то он зарегестрирует её, но если воткнуть вторую, то он запишет в лог опять первую и вторую вместе, а если выткнуть одну из флешек, то в лог файл попадет флешка, которая осталась, уже путаюсь в условиях, кто поможет? ....

P.S. Если кто подскажет как сделать чтобы в лог записывалось когда и какая флешка еще и высунута была, вообще счастья вам на 100 лет

Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
 
namespace I_see_you
{
    class usbfind
    {
        public static void process()
        {

            System.Timers.Timer tm = new System.Timers.Timer();
            tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Tick);
            tm.Interval = 1000;
            tm.Start();
        }  
        public static bool asd = true;
        public static System.IO.DriveInfo[] qwer = System.IO.DriveInfo.GetDrives();
 
 
        public static string bukovka="";
        public static string labelusb = "";
 
 
        static object changeLock = new object();
        static void OnRenamed(object sender, FileSystemEventArgs q)
        {
            lock (changeLock)
            {          //using (StreamWriter sw = new StreamWriter("Files_change.txt"))
                using (StreamWriter sw = File.AppendText("Files_change.txt"))
                {
                    sw.WriteLine("Type: {0}, Path: {1}", q.ChangeType, q.FullPath);
                    //sw.Close();
                }
            }
        }
        static void OnChanged(object sender, FileSystemEventArgs q)
        {
            lock (changeLock)
            {          //using (StreamWriter sw = new StreamWriter("Files_change.txt"))
                using (StreamWriter sw = File.AppendText("Files_change.txt"))
                {
                    
                    sw.WriteLine("Type: {0}, Path: {1}", q.ChangeType, q.FullPath);
                    
                  
                }
            }
        }
        static void tm_Tick(object sender, System.Timers.ElapsedEventArgs e)
        {
            string usbdevice = "";
 
            if (Program.Usbfind == true)
            {
                System.Threading.Thread.Sleep(1000);
                foreach (var dinfo in System.IO.DriveInfo.GetDrives())
                {
                    if (dinfo.DriveType == System.IO.DriveType.Removable && dinfo.IsReady == true &&asd==false)
                    {
                        usbdevice = "";
                        usbdevice += DateTime.Now.ToString() + " Подключено USB устройство:  " + dinfo + " Size: " + dinfo.TotalSize / 1048576 + " Mb FileSystem: " +
                             dinfo.DriveFormat + " NameUsbDevice: " + dinfo.VolumeLabel;
                        bukovka = dinfo.Name;
 
                        add_i_see_you.win32_process_i_see_you(usbdevice + Environment.NewLine, "Usb");
                    }
                }
                List<string> o1 = new List<string>();
                List<string> o2 = new List<string>();
 
 
                foreach (var info in System.IO.DriveInfo.GetDrives())
                {
                    o1.Add(info.Name.ToString());
 
                }
                foreach (var info in qwer)
                {
                    o2.Add(info.Name.ToString());
 
                }
 
                if (o1.Count() == o2.Count())
                {
                    asd = true;
                
                }
                else { asd = false;
                qwer = System.IO.DriveInfo.GetDrives();
               
                }
               
            }
        }
 
        // public static string dinfo { get; set; }
    }
}
Смысл кода таков, изначально asd = true, поэтому в лог файл ничего не попадает, и есть о1 и о2, о1 это то что сейчас воткнуто, а о2 начальное значение при запуске программы, если они равны то ничего не происходит, иначе ставим asd = false (значит пишем в лог файл содержимое драйверинфо) и обновляем qwer, тем самым о2 и о1 снова равны пока опять не будет найдена новая флешка.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 19.05.2015 в 15:31.
Елисей вне форума Ответить с цитированием
Старый 19.05.2015, 15:31   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
asd, o1, o2, qwer
Не пробовали давать переменным нормальные имена?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.05.2015, 16:50   #3
Елисей
 
Регистрация: 19.04.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Не пробовали давать переменным нормальные имена?
Помог бы лучше, а имена переменых быстро писал
Елисей вне форума Ответить с цитированием
Старый 19.05.2015, 17:38   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Помог бы лучше, а имена переменых быстро писал
быстро написал, да долго будешь переписывать.
Цитата:
Не пробовали давать переменным нормальные имена?
чтобы помочь, надо понять
чтобы понять, надо правильно назвать переменные.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с USB накопителями Dee63 Win Api 7 30.05.2011 10:12
Работа с USB SERG1980 Компоненты Delphi 11 26.10.2010 10:09
Работа с USB cnst_bus Lazarus, Free Pascal, CodeTyphon 1 22.11.2009 13:30
Работа с usb портом Spice Общие вопросы .NET 6 16.07.2008 08:32
Работа USB накопителями D7_beginner Win Api 4 04.12.2007 12:47