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(); } }); }
/// <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); } }