我想知道是否无论如何都要从C#锁定和解锁剪贴板。基本上,我会写一些东西,我不想让任何人在我拿起东西之前写信。
我该怎么做?
答案 0 :(得分:3)
不要这样做。剪贴板是为了方便用户,而不是PROGRAMMER! 您将在尝试(正确)使用剪贴板的其他程序中导致错误和崩溃,包括监视更新的程序。
“程序不应传输数据 进入我们的剪贴板没有 来自的明确指示 用户“。
- Charles Petzold,Windows 3.1编程,Microsoft Press,1992
答案 1 :(得分:1)
OpenClipboard()API函数,后跟EmptyClipboard()锁定剪贴板,直到调用CloseClipboard。您应该在目标进程中传递窗口的窗口句柄。不知道这是否真的有效。访问pinvoke.net获取所需的声明。
答案 2 :(得分:1)
正如@shambulator所说,这不是剪贴板的设计目的。也许你应该尝试不同的方法。与遗留系统的集成可以通过多种方式解决(大多数都是坏的,唉!)。
您只能发送击键的系统:它是Windows应用程序吗?你能深入了解它的窗口结构,在文本框by their HWNDs中明确设置文本吗?系统是否有可以使用的任何类型的文件I / O?也许你可以挖掘它的数据库?
答案 3 :(得分:0)
不,剪贴板不起作用。如果用户想要在另一个应用程序中复制某些东西,但是因为你的某些东西已经以某种方式将其锁定了怎么办?
如果您正在尝试进行两个进程通信,请查看为进程间通信设计的替代方法,例如远程处理,命名管道,套接字或共享内存。 Remoting可能是第一个查找用C#编写的应用程序的地方。