不使用System.Windows.Forms.Clipboard如何复制到剪贴板?

3

问题是这样的,有没有办法在不使用.NET中的Clipboard类的情况下将文本和/或文件复制到Windows剪贴板中?


当然可以...直接与Windows剪贴板进行交互,这正是Clipboard类所做的。@JeffN825 - 什么...根据用户,WPF剪贴板不能使用,因为它是来自.NET的"Clipboard Class"。 - Security Hound
为什么要绕过内置功能? - The Evil Greebo
2
你必须指出内置类的问题,以便获得一个没有相同问题的解决方案。 - Gabe
@Ramhound:WPF剪贴板和Windows Forms剪贴板是两个不同的类。 - Jeff
@JeffN825 - 查看MSDN支持文章,它们看起来几乎相同,并与系统剪贴板交互。 - Security Hound
显示剩余4条评论
1个回答

5

根据问题的标题或正文来回答...即使没有访问System.Windows.Forms,也可以访问System.Windows.Clipboard...

string textData = "I want to put this string on the clipboard.";

// After this call, the data (string) is placed on the clipboard and tagged
// with a data format of "Text".
System.Windows.Clipboard.SetData(DataFormats.Text, (Object)textData);

@JeffN825 - 基本上是完全相同的东西,只是使用了不同的dll,并进行了修改以支持Presentation Framework。 - Security Hound
不,它们不同。 - Jeff
这是正确的。但它需要加载PresentationCore.dll,这个库相当庞大。如果你想走极致,可以考虑:https://www.pinvoke.net/default.aspx/user32/SetClipboardData.html - cskwg
当我调用cskwg的链接超过一次时,它导致了堆栈损坏,不确定这个问题是否只存在于我这里,但是这个链接对我有用:https://dev59.com/1XM_5IYBdhLWcg3wslfs#1264179 - BBonless
cskwg的链接在我多次调用时导致堆破坏,不确定这个问题是否只发生在我身上,但是这个解决方法对我有效:https://dev59.com/1XM_5IYBdhLWcg3wslfs#1264179 - BBonless

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接