Example #1
0
        public NetworkedHooker(ViewModel model)
        {
            Model  = model;
            Hooker = new Hooker();
            if (!HookEvents.IsAlreadyRegistered())
            {
                HookEvents.RegisterItself();
            }

            Model.PropertyChanged += (a, b) =>
            {
                if (b.PropertyName == ViewModel.CaptureScreenShotsProperty)
                {
                    if (Model.CaptureScreenShots == true)
                    {
                        EnableRecorder();
                    }
                    else
                    {
                        Recorder?.Dispose();
                        Recorder = null;
                    }
                }
            };

            if (Model.CaptureScreenShots)  // default is to enable it
            {
                EnableRecorder();
            }

            Hooker.OnKeyDown     += Hooker_OnKeyDown;
            Hooker.OnMouseButton += Hooker_OnMouseButton;
            Hooker.OnMouseMove   += Hooker_OnMouseMove;
            Hooker.OnMouseWheel  += Hooker_OnMouseWheel;
        }
Example #2
0
        public void EnsureOldestFilesAreCleared()
        {
            using (var tmp = TempDir.Create())
            {
                for (int i = 0; i < 20; i++)
                {
                    FileInfo fi = new FileInfo(Path.Combine(tmp.Name, $"{i}.jpg"));
                    using (fi.Create())
                    {
                    }
                    fi.CreationTime = DateTime.Now + TimeSpan.FromMinutes(i);
                }

                Assert.AreEqual(20, Directory.GetFiles(tmp.Name, "*.jpg").Length);

                ScreenshotRecorder.ClearFiles(tmp.Name, 10);

                HashSet <string> expectedFiles = new HashSet <string>(Enumerable.Range(10, 10).Select(x => $"{x}.jpg"));

                var afterDeletion = Directory.GetFiles(tmp.Name, "*.jpg");
                Assert.AreEqual(10, afterDeletion.Length);

                foreach (var file in afterDeletion)
                {
                    string jpg = Path.GetFileName(file);
                    Assert.IsTrue(expectedFiles.Contains(jpg), $"File {file} was not exepcted to exist after deletion of 10 oldest files.");
                }
            }
        }
Example #3
0
        public void EnableRecorder()
        {
            if (Recorder != null)
            {
                Recorder.Dispose();
                Recorder = null;
            }

            Recorder = new ScreenshotRecorder(Model.ScreenshotDirectory, Model.ForcedScreenshotIntervalinMs, Model.JpgCompressionLevel, Model.KeepNNewestScreenShots);
        }
Example #4
0
 public void Create_And_Dispose_Fast_Many_ScreenshotRecoder_Instances()
 {
     using (var tmp = TempDir.Create())
     {
         for (int i = 0; i < 20; i++)
         {
             using (ScreenshotRecorder rec = new ScreenshotRecorder(tmp.Name, 100, 100, 100))
             {
             }
             using (ScreenshotRecorder rec = new ScreenshotRecorder(tmp.Name, 100, 100, 100))
             {
                 Thread.Sleep(50);
             }
         }
     }
 }
Example #5
0
 public void RenderToSeveralThreads()
 {
     using (var tmp = TempDir.Create())
     {
         using (ScreenshotRecorder rec = new ScreenshotRecorder(tmp.Name, 500, 100, 100))
         {
             Barrier b   = new Barrier(4);
             Action  acc = () =>
             {
                 b.SignalAndWait();
                 using (Bitmap bmp = new Bitmap(500, 100))
                 {
                     rec.TimeStampBitmap(DateTime.Now, bmp);
                 }
             };
             Parallel.Invoke(acc, acc, acc, acc);
         }
     }
 }
Example #6
0
 public void ResetId()
 {
     _CurrentId = 0;
     ScreenshotRecorder.ClearFiles(Model.ScreenshotDirectory);
 }