我有一个两个办公室加载项,使用剪贴板进行通信,例如:将表格或图片从excel复制粘贴到word。当copy \ paste操作运行时,如果用户在剪贴板中复制某些内容,则用户可以破坏剪贴板中的数据。我在第一个应用程序中复制后尝试锁定剪贴板,在第二个应用程序中粘贴之前解锁剪贴板。
我可以在一个应用程序中锁定剪贴板,但无法在其他应用程序中解锁它
这是包含剪贴板
包装的类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();
...
如何从一个应用程序打开剪贴板,从另一个应用程序关闭剪贴板?
谢谢!
答案 0 :(得分:1)
而不是使用剪贴板在您的应用之间共享数据(正如您所说,用户可以修改剪贴板)我会使用类似
的内容这是其中一些想法.. What is the simplest method of inter-process communication between 2 C# processes?
如果您真的想使用剪贴板,可以在格式中添加一些额外的自定义属性,以确保用户自己没有使用剪贴板。但以这种方式使用剪贴板似乎是不好的做法,但那是我的选择。
HTH。 大卫