锁定/解锁剪贴板从不同的应用程序
本文关键字:应用程序 解锁 剪贴板 锁定 | 更新日期: 2023-09-27 17:51:21
我有一个two office插件,它使用剪贴板进行通信,例如:从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();
...
我应该怎么做从一个应用程序打开剪贴板,并从另一个应用程序关闭剪贴板?
谢谢!
比起使用剪贴板在你的应用程序之间共享数据(正如你所说的用户可以修改剪贴板),我会使用像
这样的东西- 共享已知文件(有文件监视)可能很慢
- 命名管道(可能过于复杂)
- WCF (massive overkill)
- 内存映射文件(可能在。net中很难)http://msdn.microsoft.com/en-us/library/ms810613.aspx
如果你真的想使用剪贴板,你可以在格式中添加一些额外的自定义属性,以确保用户自己没有使用剪贴板。但是以这种方式使用剪贴板似乎是不好的做法,但这是我的选择。
HTH。大卫。