コード例 #1
0
        public void TakeScreenshot()
        {
            var message = new ScreenshotMessage("Screenshot/Save")
            {
                Path = Helper.CreateScreenshotFilePath(),
            };

            this.Messenger.Raise(message);
        }
コード例 #2
0
        public void TakeScreenshot()
        {
            var message = new ScreenshotMessage("Screenshot/Save")
            {
                Path = Helper.CreateScreenshotFilePath(),
            };

            this.Messenger.Raise(message);
        }
コード例 #3
0
        public void TakeScreenshot()
        {
            var path = Helper.CreateScreenshotFilePath();
            var message = new ScreenshotMessage("Screenshot/Save") { Path = path, };

            this.Messenger.Raise(message);

            var notify = message.Response.IsSuccess
                ? Properties.Resources.Screenshot_Saved + Path.GetFileName(path)
                : Properties.Resources.Screenshot_Failed + message.Response.Exception.Message;
            StatusService.Current.Notify(notify);
        }
コード例 #4
0
        public void TakeScreenshot()
        {
            var format = ScreenshotSettings.Format.Value;
            var path   = Helper.CreateScreenshotFilePath(format);

            var message = new ScreenshotMessage("Screenshot.Save")
            {
                Path   = path,
                Format = format,
            };

            this.Messenger.Raise(message);
        }
コード例 #5
0
 private void TakeDelayedScreenshot(bool shouldTrigger = true, ScreenshotMessage screenshotMessage = null)
 {
     if (shouldTrigger)
     {
         ToggleViewfinder(true);
         var delay = _settings.DelaySeconds;
         if (screenshotMessage != null && screenshotMessage.delay > 0)
         {
             delay = screenshotMessage.delay;
         }
         Thread.Sleep(delay * 1000);
         TakeScreenshot(true, screenshotMessage); // byUser set to true as time-lapse does not use delayed shots
     }
 }
コード例 #6
0
        public void TakeScreenshot()
        {
            var path    = Helper.CreateScreenshotFilePath();
            var message = new ScreenshotMessage("Screenshot/Save")
            {
                Path = path,
            };

            this.Messenger.Raise(message);

            var notify = message.Response.IsSuccess
                                ? Properties.Resources.Screenshot_Saved + Path.GetFileName(path)
                                : Properties.Resources.Screenshot_Failed + message.Response.Exception.Message;

            StatusService.Current.Notify(notify);
        }
コード例 #7
0
        private uint TakeScreenshot(bool byUser = true, ScreenshotMessage screenshotMessage = null)
        {
            uint resultHandle = 0;

            if (_currentAppId != string.Empty) // There needs to be a running application
            {
                if (_timerSubfolder == string.Empty)
                {
                    _timerSubfolder = DateTime.Now.ToString("yyyyMMdd");
                }
                ToggleViewfinder(false);
                _ovr.SubmitScreenshotToSteam(new ScreenshotResult());       // To make sure we don't have any hanging requests
                var subfolder = byUser ? "" : _timerSubfolder;
                UpdateOutputFolder(true, subfolder);                        // Output folder
                var tag     = _settings.AddTag ? (screenshotMessage?.tag ?? "") : "";
                var success = _ovr.TakeScreenshot(out var result, "", tag); // Capture
                var data    = new ScreenshotData {
                    result = result, byUser = byUser, screenshotMessage = screenshotMessage
                };
                if (result != null)
                {
                    _screenshotQueue.Add(result.handle, data);
                    _lastScreenshotHandle = result.handle;
                    resultHandle          = result.handle;
                }
                if (success && byUser)
                {
                    if (_settings.Audio)
                    {
                        PlayScreenshotSound();                  // Sound effect
                    }
                }
                else
                {
                    Debug.WriteLine("Taking a screenshot failed");
                    _ovr.SubmitScreenshotToSteam(new ScreenshotResult()); // Will fix screenshot in progress limbo when spamming screenshots
                }
            }
            else
            {
                Debug.WriteLine("No application is running");
            }
            return(resultHandle);
        }
コード例 #8
0
        public void TakeScreenshot()
        {
            var path = Helper.CreateScreenshotFilePath();
            var message = new ScreenshotMessage("Screenshot/Save") { Path = path, };

            this.Messenger.Raise(message);

            var notify = message.Response.IsSuccess
                ? "スクリーンショットを保存しました: " + Path.GetFileName(path)
                : "スクリーンショットの保存に失敗しました: " + message.Response.Exception.Message;
            StatusService.Current.Notify(notify);
        }
コード例 #9
0
        public static void InitializeNamedPipeServer(string pipeName)
        {
            NamedPipeServerStream pipeServer = null;

            try
            {
                pipeServer = CreateNamedPipeServer(pipeName);
            }
            catch (Exception e)
            {
#if DEBUG
                Console.WriteLine("ERROR: Could not start named pipe server. " + e.Message);
#endif
            }

            if (pipeServer == null)
            {
                KillJob(JobExitCode.PipeStartError);
            }

            try
            {
#if DEBUG
                Console.WriteLine("Pipe: " + pipeName + " Ready To Go!");
#endif
                // We shouldn't need to go async here since we'll only have one client, the agent core, and it'll maintain the connection to the named pipe until the job is done
                pipeServer.WaitForConnection();
#if DEBUG
                Console.WriteLine("Connection received to pipe.");
#endif
            }
            catch (Exception e)
            {
                pipeServer.Close();
                return;
            }

            using (StreamWriter writer = new StreamWriter(pipeServer))
            {
                writer.AutoFlush = true;

                BinaryFormatter bf = new BinaryFormatter();
                bf.Binder = new ScreenshotMessageBinder();

                List <ScreenshotMessage> screenshotMsgs = new List <ScreenshotMessage>();

                foreach (Screen screen in Screen.AllScreens)
                {
                    ScreenshotMessage msg = new ScreenshotMessage();

                    try
                    {
                        msg.Capture = GetScreenshot(screen);
                    }

                    catch (Exception e)
                    {
                        msg.ErrorMessage = e.ToString();
                    }

                    screenshotMsgs.Add(msg);
                }

#if DEBUG
                Console.WriteLine("Sending Screenshots Over Pipe...");
#endif

                foreach (ScreenshotMessage msg in screenshotMsgs)
                {
                    bf.Serialize(pipeServer, msg);
                }
#if DEBUG
                Console.WriteLine("Sending Termination Message Over Pipe...");
#endif
                bf.Serialize(pipeServer, new ScreenshotTerminationMessage());
            }
#if DEBUG
            Console.WriteLine("Waiting for client to close pipe connection...");
#endif
            while (pipeServer.IsConnected)
            {
            }
            ;
        }