private bool saveClipboardTextToFile() { var clipboardText = Clipboard.GetText(TextDataFormat.Text); if (String.IsNullOrWhiteSpace(clipboardText)) { return(false); } ThreadHelper.RunAsStaThread(() => { string textFilePath; if (Utils.GetFreePath(@"Clipboard", "txt", out textFilePath)) { try { writeTextToFile(textFilePath, clipboardText); } catch (UnauthorizedAccessException) { string tmpFile = Path.GetTempFileName(); writeTextToFile(tmpFile, clipboardText); UacAssistService.TryAsAdmin(UacAssistCommand.MOVE, tmpFile, textFilePath); } } }); return(true); }
private bool saveClipboardImageToFile() { var imageData = Clipboard.GetImage(); if (imageData == null) { return(false); } ThreadHelper.RunAsStaThread(() => { using (var memoryStream = new MemoryStream()) { string imageFilePath = String.Empty; switch (Settings.Default.ImageSaveFormat) { case 0: if (Utils.GetFreePath(@"Clipboard", "png", out imageFilePath)) { imageData.Save(memoryStream, ImageFormat.Png); } break; case 1: if (Utils.GetFreePath(@"Clipboard", "jpg", out imageFilePath)) { var encoder = ImageCodecInfo.GetImageEncoders().FirstOrDefault(e => e.MimeType == @"image/jpeg"); if (encoder != null) { var compression = Settings.Default.JpegCompression > 100 ? (byte)70 : Settings.Default.JpegCompression; var parameters = new EncoderParameters(1); parameters.Param[0] = new EncoderParameter(Encoder.Quality, (long)compression); imageData.Save(memoryStream, encoder, parameters); } } break; } if (String.IsNullOrWhiteSpace(imageFilePath)) { return; } try { using (var fileStream = new FileStream(imageFilePath, FileMode.Create)) { memoryStream.WriteTo(fileStream); } } catch (UnauthorizedAccessException) { string tmpFile = Path.GetTempFileName(); using (var fileStream = new FileStream(tmpFile, FileMode.Create)) { memoryStream.WriteTo(fileStream); } UacAssistService.TryAsAdmin(UacAssistCommand.MOVE, tmpFile, imageFilePath); } } }); return(true); }