private static LocalClipboard GetLocalClipboard() { LocalClipboard localClipboard = new LocalClipboard(); for (int i = 0; i < 3; i++) { lock (SyncService.localProfilemutex) { try { IDataObject ClipboardData = Clipboard.GetDataObject(); if (ClipboardData is null) { return(localClipboard); } if (ClipboardData.GetFormats().Length == 0) { localClipboard.Text = ""; } localClipboard.Image = (Image)ClipboardData.GetData(DataFormats.Bitmap); localClipboard.Text = (string)ClipboardData.GetData(DataFormats.Text) ?? localClipboard.Text; localClipboard.Files = (string[])ClipboardData.GetData(DataFormats.FileDrop); localClipboard.Html = (string)ClipboardData.GetData(DataFormats.Html); break; } catch { Thread.Sleep(200); } } } return(localClipboard); }
public static Profile CreateFromLocal(out LocalClipboard localClipboard) { localClipboard = GetLocalClipboard(); if (localClipboard.Files != null) { var filename = localClipboard.Files[0]; if (System.IO.File.Exists(filename)) { if (FileIsImage(filename)) { return(new ImageProfile(filename)); } return(new FileProfile(filename)); } } if (localClipboard.Image != null) { return(ImageProfile.CreateFromImage(localClipboard.Image)); } if (localClipboard.Text != null) { return(new TextProfile(localClipboard.Text)); } return(new UnkonwnProfile()); }
private async Task AdjustClipboard(Profile profile, LocalClipboard localClipboard) { if (localClipboard.Files is null || localClipboard.Html is null || localClipboard.Image is null) { for (int i = 0; i < 3; i++) { try { await profile.SetLocalClipboard(); break; } catch { await Task.Delay(50); } } } }