[英]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.