//take screenshots every 3 seconds if user is active in the last minute public void takeScreenShots() { StringBuilder outputStringBuilder = new StringBuilder(); while (!isStopped) { try { String currentTime = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"); String filename = "screenshot_" + currentTime + ".png"; //one minute of inactivity if (UserInteractionManager.GetLastInputTime() < 60) { Console.WriteLine("Taking screenshot..."); takeScreenshot(outputFolderPath + "/" + filename); } } catch (Exception e) { logger.Error("Error in ActivityTracker: ", e); } try { Thread.Sleep(3000); } catch (Exception e) { logger.Error("Error in ActivityTracker: ", e); } } }
static void RunPCInteractionListener() { String lastActivity = ""; String currentActivity = ""; StringBuilder outputStringBuilder = new StringBuilder(); //String lastMinuteFilename = "chunk#4_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm"); String lastMinuteFilename = "pcinteractionlog_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm"); while (!isStopped) { try { //added for testing!! String output = ""; if (UserInteractionManager.GetLastInputTime() < 60) { output = "[**Activity**]"; } else { output = "[**Inactivity**]"; } String last = ""; if (synchronizedCollectedResults.Count > 0) { DataCollectionStructure dataCollectionStructure = null; synchronizedCollectedResults.TryPeek(out dataCollectionStructure); if (dataCollectionStructure != null) { last = dataCollectionStructure.data; } } if (last.Equals(output)) { DataCollectionStructure dataCollectionStructure = null; synchronizedCollectedResults.TryPop(out dataCollectionStructure); if (dataCollectionStructure != null) { dataCollectionStructure.counter++; synchronizedCollectedResults.Push(dataCollectionStructure); } } else { synchronizedCollectedResults.Push(new DataCollectionStructure(output, 1)); } //added for testing!! String currentTime = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss"); String currentTimeMinutePrecision = currentTime.Substring(0, currentTime.LastIndexOf("_")); //String filename = "chunk#4_" + currentTimeMinutePrecision; String filename = "pcinteractionlog_" + currentTimeMinutePrecision; if (filename.Equals(lastMinuteFilename)) { //one minute of inactivity if (UserInteractionManager.GetLastInputTime() < 60) { currentActivity = "[**Activity**]"; Console.WriteLine("[**Activity**]"); if (!lastActivity.Equals(currentActivity)) { String line = "[**Output**]"; line += "[" + currentTime + "]"; line += "\n"; line += currentActivity; line += "\n"; outputStringBuilder.Append(line); lastActivity = currentActivity; logger.Info(line); } } else { Console.WriteLine("Inactivity..."); currentActivity = "[**Inactivity**]"; if (!lastActivity.Equals(currentActivity)) { String line = "[**Output**]"; line += "[" + currentTime + "]"; line += "\n"; line += "[**Inactivity**]"; line += "\n"; outputStringBuilder.Append(line); lastActivity = currentActivity; logger.Info(line); } } } else { String outputLine = ""; String toStringBuilder = outputStringBuilder.ToString(); if (toStringBuilder.Length > 0) { //including computer information firstly String companyInfo = "company:" + companyName + "\n"; companyInfo += "office:" + officeName + "\n"; companyInfo += "computer:" + computerName + "\n"; outputLine = companyInfo + toStringBuilder; //encrypt current line before writing it to file //String chunkedData = XorEncrypt.Encrypt(outputLine); //write this output from current minute to file writeDataToFile(outputFolderPath + "/" + lastMinuteFilename, outputLine); //writeDataToFile(outputFolderPath + "/" + lastMinuteFilename, chunkedData); //reset variables to process next minute //lastMinuteFilename = filename; outputStringBuilder.Clear(); } //reset variables to process next minute lastMinuteFilename = filename; } } catch (Exception e) { logger.Error("Error in ActivityTracker: ", e); } try { Thread.Sleep(3000); } catch (Exception e) { logger.Error("Error in ActivityTracker: ", e); } } }