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  }