【发布时间】:2015-10-07 23:10:59
【问题描述】:
我正在尝试使用带有 C#/.NET 的 this native method 获取剪贴板数据。问题是我正在处理数据。这是我的代码:
IntPtr pointer = GetClipboardData(dataformat);
int size = Marshal.SizeOf(pointer);
byte[] buff = new byte[size];
Marshal.Copy(data, buff, 0, size);
这是我用于 GetClipboardData 方法的 pinvoke:
[DllImport("user32.dll")]
private static extern IntPtr GetClipboardData(uint uFormat);
谁能告诉我哪里出错了?
【问题讨论】:
-
@Roy 是内置函数,看OP提供的链接
-
@Roy 我会为你提供 pinvoke。见编辑。
-
data实际上是一个 句柄 而不是直接指向内存的指针。您需要使用GlobalLock()锁定它 以获取内存块。 See this answer here。它是 c++,但你明白了。您不只是使用 .NET Clipboard 类的任何原因? -
还有第二个示例进一步显示从剪贴板检索信息。
标签: c# .net clipboard unmanaged intptr