public void StartReporterThread()
        {
            var settings = new Settings(new SettingsReader("ActivityLogger.ini"));

            ActivityReport  = new ActivityReport();
            _activityLogger = ActivityLogger.Instance(ActivityReport, settings);

            var mouseClickLogger   = MouseClickLogger.Instance();
            var mouseClickReporter = MouseClickReporter.Instance(_activityLogger);

            mouseClickReporter.Subscribe(mouseClickLogger);

            var keyLogger   = KeyLogger.Instance();
            var keyReporter = KeyReporter.Instance(_activityLogger);

            keyReporter.Subscribe(keyLogger);

            Task.Factory.StartNew(() =>
            {
                var activityReporter = new ActivityReporter(_activityReceiver);
                activityReporter.Subscribe(_activityLogger);

                var mouseLogger   = new MouseLogger();
                var mouseReporter = new MouseReporter(_activityLogger);
                mouseReporter.Subscribe(mouseLogger);

                var processLogger   = new ProcessLogger();
                var processReporter = new ProcessReporter(_activityLogger);
                processReporter.Subscribe(processLogger);

                var timeLogger   = new TimeLogger();
                var timeReporter = new TimeReporter(_activityLogger);
                timeReporter.Subscribe(timeLogger);

                var activityTypeLogger   = new ActivityTypeLogger(settings);
                var activityTypeReporter = new ActivityTypeReporter(_activityLogger);
                activityTypeReporter.Subscribe(activityTypeLogger);

                while (true)
                {
                    Thread.Sleep(1000);

                    // KeyLogger & MouseClickLogger will log when keystrokes/clicks are
                    // recorded, so no need to tell it to log here.

                    mouseLogger.Log();
                    processLogger.Log();
                    timeLogger.Log();

                    activityTypeLogger.DetermineActivityType(
                        processReporter.ProcessReport, mouseReporter.MouseReport,
                        MouseClickReporter.Instance().MouseClickReport, KeyReporter.Instance().KeyReport);
                    activityTypeLogger.Log();

                    _activityLogger.Log();
                }
            });
        }
Exemple #2
0
        /// <summary>Subscribes the detector to all input devices</summary>
        private void subscribeAllEvents()
        {
            // Subscribe to all chat pads
            for (PlayerIndex index = PlayerIndex.One; index <= PlayerIndex.Four; ++index)
            {
                var reporter = new KeyReporter(this.detectedDelegate, (ExtendedPlayerIndex)index);
                var method   = new KeyDelegate(reporter.KeyPressed);
                this.inputService.GetKeyboard(index).KeyPressed += method;
                this.subscribedKeyReporters.Push(method);
            }

            // Subscribe to the main PC keyboard
            {
                var reporter = new KeyReporter(this.detectedDelegate, null);
                var method   = new KeyDelegate(reporter.KeyPressed);
                this.inputService.GetKeyboard().KeyPressed += method;
                this.subscribedKeyReporters.Push(method);
            }

            // Subscribe to the main PC mouse
            {
                var reporter = new MouseButtonReporter(this.detectedDelegate, null);
                var method   = new MouseButtonDelegate(reporter.MouseButtonPressed);
                this.inputService.GetMouse().MouseButtonPressed += method;
                this.subscribedMouseReporters.Push(method);
            }

            // Subscribe to all game pads
            for (
                ExtendedPlayerIndex index = ExtendedPlayerIndex.One;
                index <= ExtendedPlayerIndex.Eight;
                ++index
                )
            {
                var reporter = new GamePadButtonReporter(this.detectedDelegate, index);
                var method   = new GamePadButtonDelegate(reporter.ButtonPressed);
                this.inputService.GetGamePad(index).ButtonPressed += method;
                this.subscribedGamePadReporters.Push(method);
            }
        }
    /// <summary>Subscribes the detector to all input devices</summary>
    private void subscribeAllEvents() {

      // Subscribe to all chat pads
      for (PlayerIndex index = PlayerIndex.One; index <= PlayerIndex.Four; ++index) {
        var reporter = new KeyReporter(this.detectedDelegate, (ExtendedPlayerIndex)index);
        var method = new KeyDelegate(reporter.KeyPressed);
        this.inputService.GetKeyboard(index).KeyPressed += method;
        this.subscribedKeyReporters.Push(method);
      }

      // Subscribe to the main PC keyboard
      {
        var reporter = new KeyReporter(this.detectedDelegate, null);
        var method = new KeyDelegate(reporter.KeyPressed);
        this.inputService.GetKeyboard().KeyPressed += method;
        this.subscribedKeyReporters.Push(method);
      }

      // Subscribe to the main PC mouse
      {
        var reporter = new MouseButtonReporter(this.detectedDelegate, null);
        var method = new MouseButtonDelegate(reporter.MouseButtonPressed);
        this.inputService.GetMouse().MouseButtonPressed += method;
        this.subscribedMouseReporters.Push(method);
      }

      // Subscribe to all game pads
      for (
        ExtendedPlayerIndex index = ExtendedPlayerIndex.One;
        index <= ExtendedPlayerIndex.Eight;
        ++index
      ) {
        var reporter = new GamePadButtonReporter(this.detectedDelegate, index);
        var method = new GamePadButtonDelegate(reporter.ButtonPressed);
        this.inputService.GetGamePad(index).ButtonPressed += method;
        this.subscribedGamePadReporters.Push(method);
      }

    }