示例#1
0
        static void Main(string[] args)
        {
            // наши настройки
            var settings = new MySettings();

            // перевариваем аргументы коммандной строки
            for (int i = 0; i <= args.Length - 2; i = i + 2)
            {
                switch (args[i])
                {
                    case "--secret":
                        settings.Secret = args[i + 1];
                        break;
                    case "--submit":
                        settings.SubmitUrl = args[i + 1];
                        break;
                    case "--step":
                        settings.StepDelay = Int32.Parse(args[i + 1]) * 1000;
                        break;
                    case "--idle":
                        settings.IdleDelay = Int32.Parse(args[i + 1]);
                        break;
                }
            }
            if (settings.Secret == null || settings.SubmitUrl == null)
            {
                MessageBox.Show("RabotatAgent: Необходимы аргументы --submit и --secret");
                Environment.Exit(1);
            }

            // проверка на single instance
            bool isFirstInstance;
            String mutexName = string.Format(
                CultureInfo.InvariantCulture,
                "RabotatAgent~{0}~{1}~{2}~1ce0cd05-a6eb-4c9a-8562-64bb8ffe3838",
                Environment.UserDomainName,
                Environment.UserName,
                (settings.Secret + settings.SubmitUrl).GetHashCode());
            mutex = new Mutex(true, mutexName, out isFirstInstance);
            if (!isFirstInstance) {
                Environment.Exit(2);
            }

            // инициализировали очередь
            queue = new ConcurrentQueue<ActiveWindow>();

            // запустили сбор данных в фоне
            DataCollector dc = new DataCollector(settings, ref queue);
            var collectTask = dc.StartTask();

            // запуск отправки данных в фоне
            DataSender ds = new DataSender(settings, ref queue);
            var sendTask = ds.StartTask();

            // tray icon
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new TaskTrayApplicationContext());
        }
示例#2
0
 public DataSender(MySettings s, ref ConcurrentQueue<ActiveWindow> q)
 {
     Settings = s;
     Queue = q;
 }
示例#3
0
 public DataCollector(MySettings settings, ref ConcurrentQueue<ActiveWindow> q)
 {
     Settings = settings;
     Queue = q;
 }