Exemple #1
0
        public IdealMonitorRect(MonitorHelper.DisplayInfo monitorToWatch)
        {
            _monitorToWatch = monitorToWatch;


            ScreenRectangle monitorRect = new ScreenRectangle(_monitorToWatch.WorkArea);

            System.Drawing.Rectangle rMonitor = RecFromScreenRec(monitorRect);
            _monitorRect = rMonitor;
            _bestRect    = rMonitor;
        }
Exemple #2
0
        private static System.Drawing.Rectangle GetBestRectangleOfMonitor(MonitorHelper.DisplayInfo monitor, List <AppInfo> allApps)
        {
            bool isFirstRect = true;

            System.Drawing.Rectangle boundingRec = new Rectangle();

            ScreenRectangle monitorRect = new ScreenRectangle(monitor.WorkArea);

            System.Drawing.Rectangle rMonitor  = RecFromScreenRec(monitorRect);
            System.Drawing.Rectangle rMonitor2 = new Rectangle(rMonitor.Left - 15, rMonitor.Top - 15, rMonitor.Width + 30, rMonitor.Height + 30);


            foreach (var anApp in allApps)
            {
                //Is the app fully contained in the window
                System.Drawing.Rectangle appRec = RecFromScreenRec(anApp.Rect);
                if (IsMinAppSize(appRec))
                {
                    if (rMonitor.Contains(appRec) || rMonitor2.Contains(appRec))
                    {
                        System.Diagnostics.Debug.WriteLine(anApp.AppName + "contained on Monitor");
                        if (isFirstRect)
                        {
                            boundingRec = appRec;
                            isFirstRect = false;
                        }
                        else
                        {
                            boundingRec = System.Drawing.Rectangle.Union(boundingRec, appRec);
                        }
                    }
                }
            }

            if (!IsMinAppSize(boundingRec))
            {
                return(rMonitor);
            }

            return(boundingRec);
        }
Exemple #3
0
        static int Main(
            int MonitorIndex = 1
            )
        {
            /* string text1 = File.ReadAllText(@"C:\data\dump\item6.txt");
             * string text2 = File.ReadAllText(@"C:\data\dump\item7.txt");
             *
             * var ax = Embeddings.GetEmbeddingFromText(text1).GetAwaiter().GetResult();
             * var ay = Embeddings.GetEmbeddingFromText(text2).GetAwaiter().GetResult();
             * var distance = MathNet.Numerics.Distance.Cosine(ax.EmbeddingVector, ay.EmbeddingVector); */


            ConfigureLogging();
            Logger.Info("Startup");
            Logger.Info("Monitor to use:" + MonitorIndex.ToString());

            OcrHelperWindows.InitOCr();

            bool result      = SHCore.SetProcessDpiAwareness(SHCore.PROCESS_DPI_AWARENESS.Process_Per_Monitor_DPI_Aware);
            var  setDpiError = Marshal.GetLastWin32Error();



            MonitorHelper h        = new MonitorHelper();
            var           displays = h.GetDisplays();

            Logger.Info("App assumes there are two monitors. # Displays detected:" + displays.Count.ToString());

            if (MonitorIndex >= displays.Count)
            {
                MonitorIndex = 0;
                Logger.Warn("fell back to monitoring Monitor 0");
            }

            _MonitorToWatch = displays[MonitorIndex];

            IdealMonitorRectWorker = new IdealMonitorRect(_MonitorToWatch);


            //Authenticate with MS Graph
            Logger.Info("Preparing for OneNoteAuthentication");
            OneNoteCapture.Init();

            //Init which pages we'll use
            Configurator.Init();

            //Determine the screen to watch


            Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            _OaDisplayUx = new OaDisplayUx();
            Logger.Info("Before Show Ux");
            _OaDisplayUx.Show();

            //Set up queue to deal with incoming events
            lock (ActionQueue)
            {
                ActionQueue.Add(WorkItem.GetGenericWorkItem(WorkItemType.Kickoff));
            }

            //Capture screenshot
            ScreenshotWorker screenShotworker = new ScreenshotWorker();

            WorkerList.Add(screenShotworker);

            //Cache image for history feature
            ImageCacheWorker cacheWorker = new ImageCacheWorker();

            CacheWorker = cacheWorker;
            WorkerList.Add(cacheWorker);

            //Motion Detection
            MotionDetectionWorker = new MotionDetection();
            WorkerList.Add(MotionDetectionWorker);

            //Perform OCR to determine embeddings
            //OcrWorker ocrWorker = new OcrWorker();
            //WorkerList.Add(ocrWorker);



            foreach (var worker in WorkerList)
            {
                Task.Run(() =>
                {
                    worker.WorkerLoop();
                });
            }


            Task.Run(() =>
            {
                while (true)
                {
                    QueueCleaner.CleanQueue();
                    Thread.Sleep(100);
                }
            });

            Task.Run(() =>
            {
                while (true)
                {
                    IdealMonitorRectWorker.DetermineRect();
                    Thread.Sleep(2000);
                }
            });



            //Thread myCaptureThread = new Thread(() => CaptureAndWorker.CaptureAndWrite(_OaDisplayUx));
            //myCaptureThread.Start();

            //Thread myShowNote = new Thread(() => ShowNoteWorker.ShowNotes());
            //myShowNote.Start();

            Application.Run();


            //Console.ReadLine();


            return(0);
        }