123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- //go:build windows
- package yu_clipboard
- import (
- yu_sys "gogs.qqck.cn/s/tools/sys"
- )
- func Get() string {
- if !yu_sys.IsClipboardFormatAvailable.CallBool(yu_sys.CF_UNICODETEXT) {
- return ""
- }
- if !yu_sys.OpenClipboard.CallBool(0) {
- return ""
- }
- defer yu_sys.CloseClipboard.Call()
- return yu_sys.GetClipboardData.CallUnicodeToUtf8(yu_sys.CF_UNICODETEXT)
- // j_hdata := yu_sys.GetClipboardData.CallUintptr(yu_sys.CF_UNICODETEXT)
- // if j_hdata == 0 {
- // return ""
- // }
- // j_data_ptr := yu_sys.GlobalLock.CallUintptr(j_hdata)
- // if j_data_ptr == 0 {
- // return ""
- // }
- // defer yu_sys.GlobalUnlock.Call(j_data_ptr)
- // return yu_strings.UnicodePtrToUtf8(j_data_ptr)
- }
- func Set(s string) bool {
- if !yu_sys.OpenClipboard.CallBool(0) {
- return false
- }
- defer yu_sys.CloseClipboard.Call()
- if !yu_sys.EmptyClipboard.CallBool() {
- return false
- }
- if s == "" {
- return true
- }
- j_unicode_size, _, _ := yu_sys.MultiByteToWideChar.Call(65001, 0, s, len(s), 0, 0)
- if j_unicode_size < 1 {
- return false
- }
- j_unicode_size = j_unicode_size*2 + 2
- j_hdata, _, _ := yu_sys.GlobalAlloc.Call(yu_sys.GMEM_MOVEABLE, j_unicode_size)
- if j_hdata == 0 {
- return false
- }
- defer yu_sys.GlobalFree.Call(j_hdata)
- j_data_ptr, _, _ := yu_sys.GlobalLock.Call(j_hdata)
- if j_data_ptr == 0 {
- return false
- }
- defer yu_sys.GlobalUnlock.Call(j_data_ptr)
- yu_sys.MultiByteToWideChar.Call(65001, 0, s, len(s), j_data_ptr, j_unicode_size)
- return yu_sys.SetClipboardData.CallUintptr(yu_sys.CF_UNICODETEXT, j_hdata) != 0
- }
|