C#或WPF解决第三方工具干扰我们调用Clipboard剪切板问题

场景还原:

  当我们在用向日葵时,我们自己调用 Clipboard 这个类时,发现不生效,只有关闭向日葵才能正常复制(该问题存在高版本出现)

需求:

  我不想关闭向日葵来达到也能复制文本,怎么办

处理手段:

  调用WindowAPI来解决

 

复制代码
/// <summary>
    ///  Window帮助类(调用WindpwAPI)
    /// <para>创建者:YWK</para>
    /// <para>创建时间:2022-06-13 下午 1:10:13</para>
    /// </summary>
    public static class WindowHelper
    {
        #region 调用WindosAPI C++动态库
        [DllImport("User32")]
        private static extern bool OpenClipboard(IntPtr hWndNewOwner);

        [DllImport("User32")]
        private static extern bool CloseClipboard();

        [DllImport("User32")]
        private static extern bool EmptyClipboard();

        [DllImport("User32")]
        private static extern bool IsClipboardFormatAvailable(int format);

        [DllImport("User32")]
        private static extern IntPtr GetClipboardData(int uFormat);

        [DllImport("User32", CharSet = CharSet.Unicode)]
        private static extern IntPtr SetClipboardData(int uFormat, IntPtr hMem);
        #endregion
        /// <summary>
        /// 复制文本
        /// </summary>
        /// <param name="value"></param>
        public static void Copy(string value)
        {
            if (!OpenClipboard(IntPtr.Zero))
            {
                Copy(value);
                return;
            }
            EmptyClipboard();
            SetClipboardData(13, Marshal.StringToHGlobalUni(value));
            CloseClipboard();
        }
    }
复制代码

 

posted @   害羞的青蛙  阅读(300)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示