Ejemplo n.º 1
0
        private async void ProcessClipboard()
        {
            var profile = CreateFromLocal(out var localClipboard);
            if (profile.GetProfileType() != ProfileType.ClipboardType.Image)
            {
                return;
            }

            if (!string.IsNullOrEmpty(localClipboard.Html)) // 无html,通常是纯复制图片,剪切板中只有bitmap
            {
                var match = Regex.Match(localClipboard.Html, @"<!--StartFragment--><img src=""(http[s]?://.*)""/><!--EndFragment-->");
                if (match.Success) // 是从浏览器复制的图片
                {
                    Log.Write("http image url: " + match.Result("$1"));
                    var localPath = await DownloadImage(match.Result("$1"));
                    if (localPath is null || !SupportsImage(localPath))
                    {
                        return;
                    }
                    profile = new ImageProfile(localPath);
                }
            }

            await AdjustClipboard(profile, localClipboard);
        }
Ejemplo n.º 2
0
        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());
        }