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