作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 Golang 编写一个程序来从 Windows 剪贴板中获取图像数据。
我明白 there is a plugin for getting data from Windows Clipboard ,问题是它不支持图像数据,只支持文本。基本上不是我想要的。
package main
import ("fmt"
"github.com/atotto/clipboard"
)
func main() {
str,err:=clipboard.ReadAll()
if err!=nil {
fmt.Println(err)
}else {
fmt.Println(str)
}
}
CF_BITMAP
至
GetClipboardData
, 返回位图 (Hbitmap) 的句柄。我不熟悉处理它,但显然它是一个长无符号数?
GdipCreateBitmapFromHBITMAP
:
var Bitmap *win.GpBitmap
pBitmap := &Bitmap
fmt.Println(win.GdipCreateBitmapFromHBITMAP(win.HBITMAP(Hbitmap),0,pBitmap))
最佳答案
问题github.com/atotto/clipboard
包似乎专门针对文本操作,并且它是跨平台的,所以这就是您所得到的。
在 Windows™ 上,程序包使用标准 Win32 API 来访问剪贴板。
具体来说,this statement调用 GetClipboardData()
通过它 CF_UNICODETEXT
格式参数,这就是操作成功完成的原因:它返回剪贴板包含的文本(在您的情况下 - 无,空字符串)。
解决方案
直接的解决方案是从该包中复制特定于 Windows 的代码的相关位并修改对 GetClipboardData
的调用中的参数。至 CF_BITMAP
反而。
一个更复杂的解决方案可能是首先对 EnumClipboardFormats()
执行一系列调用。并找出是否有任何图像数据( CF_BITMAP
)可用,然后调用 GetClipboardData
只有在这种情况下。
关于image - 如何从 Windows 剪贴板获取图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58892286/
我是一名优秀的程序员,十分优秀!