private void DoAfterUploadJobs() { try { if (Info.TaskSettings.AdvancedSettings.ResultForceHTTPS) { Info.Result.ForceHTTPS(); } if (Info.Job != TaskJob.ShareURL && (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.UseURLShortener) || Info.Job == TaskJob.ShortenURL || (Info.TaskSettings.AdvancedSettings.AutoShortenURLLength > 0 && Info.Result.URL.Length > Info.TaskSettings.AdvancedSettings.AutoShortenURLLength))) { UploadResult result = ShortenURL(Info.Result.URL); if (result != null) { Info.Result.ShortenedURL = result.ShortenedURL; Info.Result.Errors.AddRange(result.Errors); } } if (Info.Job != TaskJob.ShortenURL && (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.ShareURL) || Info.Job == TaskJob.ShareURL)) { UploadResult result = ShareURL(Info.Result.ToString()); if (result != null) { Info.Result.Errors.AddRange(result.Errors); } if (Info.Job == TaskJob.ShareURL) { Info.Result.IsURLExpected = false; } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.CopyURLToClipboard)) { string txt; if (!string.IsNullOrEmpty(Info.TaskSettings.AdvancedSettings.ClipboardContentFormat)) { txt = new UploadInfoParser().Parse(Info, Info.TaskSettings.AdvancedSettings.ClipboardContentFormat); } else { txt = Info.Result.ToString(); } if (!string.IsNullOrEmpty(txt)) { ClipboardHelpers.CopyText(txt); } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.OpenURL)) { string result; if (!string.IsNullOrEmpty(Info.TaskSettings.AdvancedSettings.OpenURLFormat)) { result = new UploadInfoParser().Parse(Info, Info.TaskSettings.AdvancedSettings.OpenURLFormat); } else { result = Info.Result.ToString(); } URLHelpers.OpenURL(result); } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.ShowQRCode)) { threadWorker.InvokeAsync(() => new QRCodeForm(Info.Result.ToString()).Show()); } } catch (Exception e) { DebugHelper.WriteException(e); AddErrorMessage(e.ToString()); } }
private void btnCopyPreview_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText($"{Path.GetFileName(Options.FFmpeg.FFmpegPath)} {Options.GetFFmpegCommands()}"); }
private void btnCopyPreview_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText("ffmpeg " + Options.GetFFmpegCommands()); }
private void DoAfterUploadJobs() { try { if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.UseURLShortener) || Info.Job == TaskJob.ShortenURL) { UploadResult result = ShortenURL(Info.Result.URL); if (result != null) { Info.Result.ShortenedURL = result.ShortenedURL; } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.ShareURLToSocialNetworkingService)) { OAuthInfo twitterOAuth = Program.UploadersConfig.TwitterOAuthInfoList.ReturnIfValidIndex(Program.UploadersConfig.TwitterSelectedAccount); if (twitterOAuth != null) { using (TwitterMsg twitter = new TwitterMsg(twitterOAuth)) { twitter.Message = Info.Result.ToString(); twitter.Config = Program.UploadersConfig.TwitterClientConfig; twitter.ShowDialog(); } } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.SendURLWithEmail)) { using (EmailForm emailForm = new EmailForm(Program.UploadersConfig.EmailRememberLastTo ? Program.UploadersConfig.EmailLastTo : string.Empty, Program.UploadersConfig.EmailDefaultSubject, Info.Result.ToString())) { emailForm.Icon = Resources.ShareX_Icon; if (emailForm.ShowDialog() == DialogResult.OK) { if (Program.UploadersConfig.EmailRememberLastTo) { Program.UploadersConfig.EmailLastTo = emailForm.ToEmail; } Email email = new Email { SmtpServer = Program.UploadersConfig.EmailSmtpServer, SmtpPort = Program.UploadersConfig.EmailSmtpPort, FromEmail = Program.UploadersConfig.EmailFrom, Password = Program.UploadersConfig.EmailPassword }; email.Send(emailForm.ToEmail, emailForm.Subject, emailForm.Body); } } } if (Info.TaskSettings.AfterUploadJob.HasFlag(AfterUploadTasks.CopyURLToClipboard)) { string txt; if (!string.IsNullOrEmpty(Info.TaskSettings.AdvancedSettings.ClipboardContentFormat)) { txt = new UploadInfoParser().Parse(Info, Info.TaskSettings.AdvancedSettings.ClipboardContentFormat); } else { txt = Info.Result.ToString(); } if (!string.IsNullOrEmpty(txt)) { ClipboardHelpers.CopyText(txt); } } } catch (Exception e) { DebugHelper.WriteException(e); if (Info.Result == null) { Info.Result = new UploadResult(); } Info.Result.Errors.Add(e.ToString()); } }
private void tsbCopyStats_Click(object sender, EventArgs e) { string stats = OutputStats(allHistoryItems); ClipboardHelpers.CopyText(stats); }
private void tsmiCopyHSB_Click(object sender, EventArgs e) { HSB hsb = colorPicker.SelectedColor.HSB; ClipboardHelpers.CopyText($"{hsb.Hue360:0.0}°, {hsb.Saturation100:0.0}%, {hsb.Brightness100:0.0}%"); }
private void tsmiCopyDecimal_Click(object sender, EventArgs e) { int dec = ColorHelpers.ColorToDecimal(colorPicker.SelectedColor, ColorFormat.RGB); ClipboardHelpers.CopyText(dec.ToString()); }
private void tsbCopyDeletionURL_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText(Result.DeletionURL); }
private void tsbResponseTextCopy_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText(rtbResponseText.Text); }
private void tsbCopyShortenedURL_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText(Result.ShortenedURL); }
private void tsbCopyThumbnailURL_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText(Result.ThumbnailURL); }
public async void StartRecording(TaskSettings TaskSettings) { SelectRegion(); Screenshot.CaptureCursor = TaskSettings.CaptureSettings.ShowCursor; if (IsRecording || CaptureRectangle.IsEmpty || screenRecorder != null) { return; } IsRecording = true; TrayIcon.Icon = Resources.control_record_yellow.ToIcon(); TrayIcon.Visible = true; string path = ""; try { using (ScreenRegionManager screenRegionManager = new ScreenRegionManager()) { screenRegionManager.Start(CaptureRectangle); await TaskEx.Run(() => { if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.AVI) { path = Path.Combine(Program.ScreenshotsPath, TaskHelpers.GetFilename(TaskSettings, "avi")); } else { path = Program.ScreenRecorderCacheFilePath; } float duration = TaskSettings.CaptureSettings.ScreenRecordFixedDuration ? TaskSettings.CaptureSettings.ScreenRecordDuration : 0; screenRecorder = new ScreenRecorder(TaskSettings.CaptureSettings.ScreenRecordFPS, duration, CaptureRectangle, path, TaskSettings.CaptureSettings.ScreenRecordOutput); int delay = (int)(TaskSettings.CaptureSettings.ScreenRecordStartDelay * 1000); if (delay > 0) { Thread.Sleep(delay); } screenRegionManager.ChangeColor(); this.InvokeSafe(() => TrayIcon.Icon = Resources.control_record.ToIcon()); screenRecorder.StartRecording(); }); } if (screenRecorder != null && TaskSettings.CaptureSettings.ScreenRecordOutput != ScreenRecordOutput.AVI) { TrayIcon.Icon = Resources.camcorder__pencil.ToIcon(); await TaskEx.Run(() => { switch (TaskSettings.CaptureSettings.ScreenRecordOutput) { case ScreenRecordOutput.GIF: path = Path.Combine(Program.ScreenshotsPath, TaskHelpers.GetFilename(TaskSettings, "gif")); screenRecorder.SaveAsGIF(path, TaskSettings.ImageSettings.ImageGIFQuality); break; case ScreenRecordOutput.AVICommandLine: path = Path.Combine(Program.ScreenshotsPath, TaskHelpers.GetFilename(TaskSettings, TaskSettings.CaptureSettings.ScreenRecordCommandLineOutputExtension)); screenRecorder.EncodeUsingCommandLine(path, TaskSettings.CaptureSettings.ScreenRecordCommandLinePath, TaskSettings.CaptureSettings.ScreenRecordCommandLineArgs); break; } }); } } finally { if (screenRecorder != null) { if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.AVICommandLine && !string.IsNullOrEmpty(screenRecorder.CachePath) && File.Exists(screenRecorder.CachePath)) { File.Delete(screenRecorder.CachePath); } screenRecorder.Dispose(); screenRecorder = null; } if (TrayIcon.Visible) { TrayIcon.Visible = false; } } if (!string.IsNullOrEmpty(path) && File.Exists(path)) { if (TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.UploadImageToHost)) { UploadManager.UploadFile(path, TaskSettings); } else { if (TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFilePathToClipboard)) { ClipboardHelpers.CopyText(path); } TaskHelpers.ShowResultNotifications(path, TaskSettings); } } IsRecording = false; }
private void ExecuteAction(ToastClickAction action) { switch (action) { case ToastClickAction.AnnotateImage: if (!string.IsNullOrEmpty(Config.FilePath) && Helpers.IsImageFile(Config.FilePath)) { TaskHelpers.AnnotateImageFromFile(Config.FilePath); } break; case ToastClickAction.CopyImageToClipboard: if (!string.IsNullOrEmpty(Config.FilePath)) { ClipboardHelpers.CopyImageFromFile(Config.FilePath); } break; case ToastClickAction.CopyFile: if (!string.IsNullOrEmpty(Config.FilePath)) { ClipboardHelpers.CopyFile(Config.FilePath); } break; case ToastClickAction.CopyFilePath: if (!string.IsNullOrEmpty(Config.FilePath)) { ClipboardHelpers.CopyText(Config.FilePath); } break; case ToastClickAction.CopyUrl: if (!string.IsNullOrEmpty(Config.URL)) { ClipboardHelpers.CopyText(Config.URL); } break; case ToastClickAction.OpenFile: if (!string.IsNullOrEmpty(Config.FilePath)) { Helpers.OpenFile(Config.FilePath); } break; case ToastClickAction.OpenFolder: if (!string.IsNullOrEmpty(Config.FilePath)) { Helpers.OpenFolderWithFile(Config.FilePath); } break; case ToastClickAction.OpenUrl: if (!string.IsNullOrEmpty(Config.URL)) { URLHelpers.OpenURL(Config.URL); } break; case ToastClickAction.Upload: if (!string.IsNullOrEmpty(Config.FilePath)) { UploadManager.UploadFile(Config.FilePath); } break; } }
private void NotificationForm_MouseClick(object sender, MouseEventArgs e) { tDuration.Stop(); Close(); if (e.Button == MouseButtons.Left) { switch (ToastConfig.Action) { case ToastClickAction.AnnotateImage: if (!string.IsNullOrEmpty(ToastConfig.FilePath) && Helpers.IsImageFile(ToastConfig.FilePath)) { TaskHelpers.AnnotateImage(ToastConfig.FilePath); } break; case ToastClickAction.CopyImageToClipboard: if (!string.IsNullOrEmpty(ToastConfig.FilePath)) { ClipboardHelpers.CopyImageFromFile(ToastConfig.FilePath); } break; case ToastClickAction.CopyUrl: if (!string.IsNullOrEmpty(ToastConfig.URL)) { ClipboardHelpers.CopyText(ToastConfig.URL); } break; case ToastClickAction.OpenFile: if (!string.IsNullOrEmpty(ToastConfig.FilePath)) { URLHelpers.OpenURL(ToastConfig.FilePath); } break; case ToastClickAction.OpenFolder: if (!string.IsNullOrEmpty(ToastConfig.FilePath)) { Helpers.OpenFolderWithFile(ToastConfig.FilePath); } break; case ToastClickAction.OpenUrl: if (!string.IsNullOrEmpty(ToastConfig.URL)) { URLHelpers.OpenURL(ToastConfig.URL); } break; case ToastClickAction.Upload: if (!string.IsNullOrEmpty(ToastConfig.FilePath)) { UploadManager.UploadFile(ToastConfig.FilePath); } break; } } }
private void tsmiCopyRGB_Click(object sender, EventArgs e) { RGBA rgba = colorPicker.SelectedColor.RGBA; ClipboardHelpers.CopyText($"{rgba.Red}, {rgba.Green}, {rgba.Blue}"); }
private void btnCopyPreview_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText(txtCommandLinePreview.Text); }
private void tsmiCopyHex_Click(object sender, EventArgs e) { string hex = ColorHelpers.ColorToHex(colorPicker.SelectedColor, ColorFormat.RGB); ClipboardHelpers.CopyText("#" + hex); }
private void DoFileJobs() { if (!string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath)) { if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.PerformActions) && Info.TaskSettings.ExternalPrograms != null) { IEnumerable <ExternalProgram> actions = Info.TaskSettings.ExternalPrograms.Where(x => x.IsActive); if (actions.Count() > 0) { bool isFileModified = false; string fileName = Info.FileName; foreach (ExternalProgram fileAction in actions) { string modifiedPath = fileAction.Run(Info.FilePath); if (!string.IsNullOrEmpty(modifiedPath)) { isFileModified = true; Info.FilePath = modifiedPath; if (Data != null) { Data.Dispose(); } fileAction.DeletePendingInputFile(); } } if (isFileModified) { string extension = Helpers.GetFilenameExtension(Info.FilePath); Info.FileName = Helpers.ChangeFilenameExtension(fileName, extension); LoadFileStream(); } } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFileToClipboard)) { ClipboardHelpers.CopyFile(Info.FilePath); } else if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFilePathToClipboard)) { ClipboardHelpers.CopyText(Info.FilePath); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ShowInExplorer)) { Helpers.OpenFolderWithFile(Info.FilePath); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ScanQRCode) && Info.DataType == EDataType.Image) { QRCodeForm.OpenFormDecodeFromFile(Info.FilePath).ShowDialog(); } } }
private void tsmiCopyCMYK_Click(object sender, EventArgs e) { CMYK cmyk = colorPicker.SelectedColor.CMYK; ClipboardHelpers.CopyText($"{cmyk.Cyan100:0.0}%, {cmyk.Magenta100:0.0}%, {cmyk.Yellow100:0.0}%, {cmyk.Key100:0.0}%"); }
public void StartRecording(TaskSettings TaskSettings) { if (TaskSettings.CaptureSettings.RunScreencastCLI) { if (!Program.Settings.VideoEncoders.IsValidIndex(TaskSettings.CaptureSettings.VideoEncoderSelected)) { MessageBox.Show("There is no valid CLI video encoder selected.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else if (!Program.Settings.VideoEncoders[TaskSettings.CaptureSettings.VideoEncoderSelected].IsValid()) { MessageBox.Show("CLI video encoder file does not exist: " + Program.Settings.VideoEncoders[TaskSettings.CaptureSettings.VideoEncoderSelected].Path, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.FFmpeg && !File.Exists(TaskSettings.CaptureSettings.FFmpegOptions.CLIPath)) { string ffmpegText = string.IsNullOrEmpty(TaskSettings.CaptureSettings.FFmpegOptions.CLIPath) ? "ffmpeg.exe" : TaskSettings.CaptureSettings.FFmpegOptions.CLIPath; if (MessageBox.Show(ffmpegText + " does not exist." + Environment.NewLine + Environment.NewLine + "Would you like to automatically download it?", Application.ProductName + " - Missing ffmpeg.exe", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { if (FFmpegHelper.DownloadFFmpeg(false, DownloaderForm_InstallRequested) == DialogResult.OK) { Program.DefaultTaskSettings.CaptureSettings.FFmpegOptions.CLIPath = TaskSettings.TaskSettingsReference.CaptureSettings.FFmpegOptions.CLIPath = TaskSettings.CaptureSettings.FFmpegOptions.CLIPath = Path.Combine(Program.ToolsFolder, "ffmpeg.exe"); } } else { return; } } SelectRegion(); if (IsRecording || captureRectangle.IsEmpty || screenRecorder != null) { return; } IsRecording = true; Screenshot.CaptureCursor = TaskSettings.CaptureSettings.ShowCursor; TrayIcon.Text = "ShareX - Waiting..."; TrayIcon.Icon = Resources.control_record_yellow.ToIcon(); TrayIcon.Visible = true; string path = ""; ScreenRegionManager screenRegionManager = new ScreenRegionManager(); screenRegionManager.Start(captureRectangle); TaskEx.Run(() => { try { if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.AVI) { path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, "avi")); } else if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.FFmpeg) { path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, TaskSettings.CaptureSettings.FFmpegOptions.Extension)); } else { path = Program.ScreenRecorderCacheFilePath; } ScreencastOptions options = new ScreencastOptions() { CaptureArea = captureRectangle, GIFFPS = TaskSettings.CaptureSettings.GIFFPS, ScreenRecordFPS = TaskSettings.CaptureSettings.ScreenRecordFPS, OutputPath = path, Duration = TaskSettings.CaptureSettings.ScreenRecordFixedDuration ? TaskSettings.CaptureSettings.ScreenRecordDuration : 0, AVI = TaskSettings.CaptureSettings.AVIOptions, FFmpeg = TaskSettings.CaptureSettings.FFmpegOptions, DrawCursor = TaskSettings.CaptureSettings.ShowCursor }; screenRecorder = new ScreenRecorder(options, captureRectangle, TaskSettings.CaptureSettings.ScreenRecordOutput); int delay = (int)(TaskSettings.CaptureSettings.ScreenRecordStartDelay * 1000); if (delay > 0) { Thread.Sleep(delay); } this.InvokeSafe(() => { screenRegionManager.ChangeColor(Color.FromArgb(0, 255, 0)); }); TrayIcon.Text = "ShareX - Click tray icon to stop recording."; TrayIcon.Icon = Resources.control_record.ToIcon(); screenRecorder.StartRecording(); } finally { if (screenRegionManager != null) { this.InvokeSafe(() => screenRegionManager.Dispose()); } } try { if (screenRecorder != null) { TrayIcon.Text = "ShareX - Encoding..."; TrayIcon.Icon = Resources.camcorder_pencil.ToIcon(); string sourceFilePath = path; if (TaskSettings.CaptureSettings.ScreenRecordOutput == ScreenRecordOutput.GIF) { if (TaskSettings.CaptureSettings.RunScreencastCLI) { sourceFilePath = Path.ChangeExtension(Program.ScreenRecorderCacheFilePath, "gif"); } else { sourceFilePath = path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, "gif")); } screenRecorder.SaveAsGIF(sourceFilePath, TaskSettings.ImageSettings.ImageGIFQuality); } if (TaskSettings.CaptureSettings.RunScreencastCLI) { VideoEncoder encoder = Program.Settings.VideoEncoders[TaskSettings.CaptureSettings.VideoEncoderSelected]; path = Path.Combine(TaskSettings.CaptureFolder, TaskHelpers.GetFilename(TaskSettings, encoder.OutputExtension)); screenRecorder.EncodeUsingCommandLine(encoder, sourceFilePath, path); } } } finally { if (screenRecorder != null) { if (TaskSettings.CaptureSettings.RunScreencastCLI && !string.IsNullOrEmpty(screenRecorder.CachePath) && File.Exists(screenRecorder.CachePath)) { File.Delete(screenRecorder.CachePath); } screenRecorder.Dispose(); screenRecorder = null; } } }, () => { if (TrayIcon.Visible) { TrayIcon.Visible = false; } IsRecording = false; if (!string.IsNullOrEmpty(path) && File.Exists(path)) { if (TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.UploadImageToHost)) { UploadManager.UploadFile(path, TaskSettings); } else { if (TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFilePathToClipboard)) { ClipboardHelpers.CopyText(path); } TaskHelpers.ShowResultNotifications(path, TaskSettings, path); } } }); }
private void tsmiCopyPosition_Click(object sender, EventArgs e) { ClipboardHelpers.CopyText($"{txtX.Text}, {txtY.Text}"); }
private void DoAfterCaptureJobs() { if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AddImageEffects)) { tempImage = TaskHelpers.AddImageEffects(tempImage, Info.TaskSettings); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AddWatermark) && Info.TaskSettings.ImageSettings.WatermarkConfig != null) { WatermarkManager watermarkManager = new WatermarkManager(Info.TaskSettings.ImageSettings.WatermarkConfig); watermarkManager.ApplyWatermark(tempImage); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.AnnotateImage)) { tempImage = TaskHelpers.AnnotateImage(tempImage); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyImageToClipboard)) { ClipboardHelpers.CopyImage(tempImage); DebugHelper.WriteLine("CopyImageToClipboard"); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SendImageToPrinter)) { if (Program.Settings.DontShowPrintSettingsDialog) { using (PrintHelper printHelper = new PrintHelper(tempImage)) { printHelper.Settings = Program.Settings.PrintSettings; printHelper.Print(); } } else { using (PrintForm printForm = new PrintForm(tempImage, Program.Settings.PrintSettings)) { printForm.ShowDialog(); } } } if (Info.TaskSettings.AfterCaptureJob.HasFlagAny(AfterCaptureTasks.SaveImageToFile, AfterCaptureTasks.SaveImageToFileWithDialog, AfterCaptureTasks.UploadImageToHost)) { using (tempImage) { ImageData imageData = TaskHelpers.PrepareImage(tempImage, Info.TaskSettings); Data = imageData.ImageStream; Info.FileName = Path.ChangeExtension(Info.FileName, imageData.ImageFormat.GetDescription()); if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFile)) { Info.FilePath = Path.Combine(Program.ScreenshotsPath, Info.FileName); imageData.Write(Info.FilePath); DebugHelper.WriteLine("SaveImageToFile: " + Info.FilePath); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.SaveImageToFileWithDialog)) { using (SaveFileDialog sfd = new SaveFileDialog()) { sfd.InitialDirectory = Program.ScreenshotsPath; sfd.FileName = Info.FileName; sfd.DefaultExt = Path.GetExtension(Info.FileName).Substring(1); sfd.Filter = string.Format("*{0}|*{0}|All files (*.*)|*.*", Path.GetExtension(Info.FileName)); sfd.Title = "Choose a folder to save " + Path.GetFileName(Info.FileName); if (sfd.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(sfd.FileName)) { Info.FilePath = sfd.FileName; imageData.Write(Info.FilePath); DebugHelper.WriteLine("SaveImageToFileWithDialog: " + Info.FilePath); } } } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFileToClipboard) && !string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath)) { ClipboardHelpers.CopyFile(Info.FilePath); } else if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.CopyFilePathToClipboard) && !string.IsNullOrEmpty(Info.FilePath)) { ClipboardHelpers.CopyText(Info.FilePath); } if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.PerformActions) && Info.TaskSettings.ExternalPrograms != null && !string.IsNullOrEmpty(Info.FilePath) && File.Exists(Info.FilePath)) { var actions = Info.TaskSettings.ExternalPrograms.Where(x => x.IsActive); if (actions.Count() > 0) { if (Data != null) { Data.Dispose(); } foreach (ExternalProgram fileAction in actions) { fileAction.Run(Info.FilePath); } Data = new FileStream(Info.FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); } } } } }