亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 Windows 剪貼板獲取圖像數據

如何從 Windows 剪貼板獲取圖像數據

Go
HUX布斯 2023-08-07 10:54:01
我正在嘗試用 Golang 編寫一個程序來從 Windows 剪貼板獲取圖像數據。我知道有一個插件可以從 Windows 剪貼板獲取數據,問題是它不支持圖像數據,僅支持文本?;旧喜皇俏蚁胍摹ackage mainimport ("fmt"? ? ? ? "github.com/atotto/clipboard")func main()? {? ? str,err:=clipboard.ReadAll()? ? if err!=nil {? ? ? ? fmt.Println(err)? ? ? ??? ? }else {? ? ? ? fmt.Println(str)? ? }}這將輸出“操作成功完成”。如果剪貼板包含圖像,則會出現錯誤。知道如何做到這一點嗎?更新?。何覈L試傳遞CF_BITMAP給GetClipboardData,它返回位圖(Hbitmap)的句柄。我不熟悉處理這個問題,但顯然它是一個很長的無符號數字?使用該功能GdipCreateBitmapFromHBITMAP:var?Bitmap?*win.GpBitmap pBitmap?:=?&Bitmap fmt.Println(win.GdipCreateBitmapFromHBITMAP(win.HBITMAP(Hbitmap),0,pBitmap))我得到了“ok”輸出,但位圖是空的。我又被困住了。我應該如何存儲位圖?
查看完整描述

2 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

對于仍在尋找解決方案的任何人。這是一個可以處理 UTF8 和圖像剪貼板數據的活動 Go 包:

https://github.com/golang-design/clipboard

它也是跨平臺的(Linux/Windows/macOS),無需額外的依賴項,這是前面提到的 atotto/clipboard 包的一個很好的替代品。


查看完整回答
反對 回復 2023-08-07
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

問題

github.com/atotto/clipboard軟件包似乎專門針對文本操作,并且它是跨平臺的,所以這就是您所得到的。

在 Windows? 上,該包使用標準 Win32 API 來訪問剪貼板。具體來說,此語句調用GetClipboardData()向其傳遞CF_UNICODETEXT格式參數,這就是操作成功完成的原因:它返回剪貼板包含的文本(在您的情況下,無,一個空字符串)。

解決方案

GetClipboardData最簡單的解決方案是從該包中復制 Windows 特定代碼的相關位,并修改對to的調用中的參數CF_BITMAP。

更復雜的解決方案可能是首先執行一系列調用EnumClipboardFormats()并確定是否有任何圖像數據 (?CF_BITMAP) 可用,并且GetClipboardData僅在可用的情況下調用。


查看完整回答
反對 回復 2023-08-07
  • 2 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號