public void TakeScreenshot() { var message = new ScreenshotMessage("Screenshot/Save") { Path = Helper.CreateScreenshotFilePath(), }; this.Messenger.Raise(message); }
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); }
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); }
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 } }
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); }
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); }
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) { } ; }