github.com/secoba/wails/v2@v2.6.4/internal/frontend/desktop/windows/winc/w32/oleaut32.go (about) 1 //go:build windows 2 3 /* 4 * Copyright (C) 2019 Tad Vizbaras. All Rights Reserved. 5 * Copyright (C) 2010-2012 The W32 Authors. All Rights Reserved. 6 */ 7 package w32 8 9 import ( 10 "syscall" 11 "unsafe" 12 ) 13 14 var ( 15 modoleaut32 = syscall.NewLazyDLL("oleaut32") 16 17 procVariantInit = modoleaut32.NewProc("VariantInit") 18 procSysAllocString = modoleaut32.NewProc("SysAllocString") 19 procSysFreeString = modoleaut32.NewProc("SysFreeString") 20 procSysStringLen = modoleaut32.NewProc("SysStringLen") 21 procCreateDispTypeInfo = modoleaut32.NewProc("CreateDispTypeInfo") 22 procCreateStdDispatch = modoleaut32.NewProc("CreateStdDispatch") 23 ) 24 25 func VariantInit(v *VARIANT) { 26 hr, _, _ := procVariantInit.Call(uintptr(unsafe.Pointer(v))) 27 if hr != 0 { 28 panic("Invoke VariantInit error.") 29 } 30 return 31 } 32 33 func SysAllocString(v string) (ss *int16) { 34 pss, _, _ := procSysAllocString.Call(uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(v)))) 35 ss = (*int16)(unsafe.Pointer(pss)) 36 return 37 } 38 39 func SysFreeString(v *int16) { 40 hr, _, _ := procSysFreeString.Call(uintptr(unsafe.Pointer(v))) 41 if hr != 0 { 42 panic("Invoke SysFreeString error.") 43 } 44 return 45 } 46 47 func SysStringLen(v *int16) uint { 48 l, _, _ := procSysStringLen.Call(uintptr(unsafe.Pointer(v))) 49 return uint(l) 50 }