簡體   English   中英

從不同的應用程序鎖定/解鎖剪貼板

[英]Lock / unlock clipboard from different applications

我有一個兩個辦公室的外接程序,可以使用剪貼板進行通信,例如:將表格或圖片從Excel復制並粘貼到Word。 在運行復制\\粘貼操作時,如果用戶在剪貼板中復制內容,則可能損壞剪貼板中的數據。 我嘗試在第一個應用程序中復制鎖定剪貼板 ,並在粘貼到第二個應用程序中之前解鎖剪貼板

我可以在一個應用程序中鎖定剪貼板,但不能在另一個應用程序中解鎖它

這是帶有剪貼板包裝器的類

public class MyClipboard
    {
        [DllImport("user32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool OpenClipboard(IntPtr hwnd);

        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool CloseClipboard();

        public void Close()
        {
            CloseClipboard();
        }

        public void Open()
        {
            OpenClipboard(IntPtr.Zero);
        }
    }

首次申請:

    MyClipboard clipboard = new MyClipboard();
                clipboard.Open();
    ...

二次申請:

 MyClipboard clipboard = new MyClipboard();
                clipboard.Close();
    ...

我應該怎么做才能從一個應用程序打開剪貼板,然后從另一個應用程序關閉剪貼板?

謝謝!

與其使用剪貼板在您的應用之間共享數據(就像您說的用戶可以修改剪貼板),我不如使用

這是其他一些想法。2個C#進程之間的進程間通信最簡單的方法是什么?

如果您確實要使用剪貼板,則可以在格式中添加一些額外的自定義屬性,以確保用戶自己未使用剪貼板。 但是以這種方式使用剪貼板似乎是不好的做法,但這是我的選擇。

HTH。 大衛

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM