OpenClipboard失败,出现0x800401D0(CLIPBRD_E_CANT_OPEN))

时间:2015-07-03 19:52:14

标签: c# wpf windows-8.1

我有一个简单的WPF应用程序,它创建一个Thread,每秒轮询剪贴板并修剪它找到的任何字符串

但是,在后台线程中,一旦字符串内容发生更改,剪贴板方法将失败并显示异常

OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))

示例:我有" ABC"在我的剪贴板上并启动应用程序。将弹出一个消息框,其中包含字符串ABC。现在我复制一个字符串" DEF"而不是弹出一个消息框,应用程序崩溃与上述错误

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            Thread t = new Thread(new ThreadStart(cleanStr));
            t.SetApartmentState(ApartmentState.STA);
            t.Start();
        }
        void cleanStr()
        {
            string prevStr = "";
            int err = 0;
            while (true)
            {
                    if (Clipboard.ContainsText() && !prevStr.Equals(Clipboard.GetText()))
                    {
                        prevStr = Clipboard.GetText();
                        prevStr=prevStr.Trim();
                        Clipboard.SetText(prevStr);
                        MessageBox.Show(prevStr);
                        Thread.Sleep(1000);
                    }
            }
        }

0 个答案:

没有答案