我试图读取Unity中C#剪贴板中的文本,然后将其设置为变量。从剪贴板中读取文本
我看到这个报道,但它似乎并没有在统一的工作: https://msdn.microsoft.com/en-us/library/kz40084e(v=vs.110).aspx
我只是想能够阅读纯文本。没有图像或任何东西。我也发现了一些其他的文章,但是没有一个代码可以在Unity中使用。
我试图读取Unity中C#剪贴板中的文本,然后将其设置为变量。从剪贴板中读取文本
我看到这个报道,但它似乎并没有在统一的工作: https://msdn.microsoft.com/en-us/library/kz40084e(v=vs.110).aspx
我只是想能够阅读纯文本。没有图像或任何东西。我也发现了一些其他的文章,但是没有一个代码可以在Unity中使用。
我做了一个快速示例,展示如何使用System.Windows.Forms
命名空间中的Clipboard
类。事实证明,该方法需要[STAThread]
方法属性才能工作。我不知道这是否可以在Unity3D C#脚本中使用。
[STAThread]
static void Main(string[] args)
{
if (Clipboard.ContainsText(TextDataFormat.Text))
{
string clipboardText = Clipboard.GetText(TextDataFormat.Text);
// Do whatever you need to do with clipboardText
}
}
要了解更多关于什么属性用于,看看这个问题(更重要的是,它的答案):What does [STAThread] do?
我做了一点点挖掘,它看起来像Unity3D有一个系统剪贴板的包装。我还没有尝试过,但它看起来应该可以跨越不同的操作系统,而不仅仅是Windows:GUIUtility.systemCopyBuffer
不能在Unity3D中使用它。即使他能够导入所需的DLL,它也不会在其他平台上工作。它只能在Windows上运行。 – Programmer
@程序员的确如此。我找到了关于'EditorGUIUtility.systemCopyBuffer'的Unity3D文档的链接,看起来它可以用来访问操作系统的剪贴板。我编辑了我的答案以包含链接,但我还没有尝试过。 –
+1。 EditorGUIUtility.systemCopyBuffer仅适用于Unity编辑器。 GUIUtility.systemCopyBuffer是正确的类/方法。更新你的答案。这将适用于除Web/WebGL之外的所有平台。 – Programmer
你能在Unity3D C#脚本中显示代码吗?另外,何时您想要访问剪贴板数据? –
您使用什么代码访问数据?为什么它不起作用?... – TheLethalCoder
我想在程序加载时在开始时访问它。 – Andrew