go-tg-screenshot-bot
86 строк · 3.3 Кб
1// Copyright 2010 The win Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// +build windows,amd64
6
7package win8
9import (10"syscall"11"unsafe"12)
13
14// SetPropValue identifies the accessible element to be annotated, specify the property to be annotated, and provide a new value for that property.
15// If server developers know the HWND of the accessible element they want to annotate, they can use one of the following methods: SetHwndPropStr, SetHwndProp, or SetHwndPropServer
16func (obj *IAccPropServices) SetPropValue(idString []byte, idProp *MSAAPROPID, v *VARIANT) HRESULT {17var idStringPtr unsafe.Pointer18idStringLen := len(idString)19if idStringLen != 0 {20idStringPtr = unsafe.Pointer(&idString[0])21}22ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetPropValue, 5,23uintptr(unsafe.Pointer(obj)),24uintptr(idStringPtr),25uintptr(idStringLen),26uintptr(unsafe.Pointer(idProp)),27uintptr(unsafe.Pointer(v)),280)29return HRESULT(ret)30}
31
32// SetHwndProp wraps SetPropValue, providing a convenient entry point for callers who are annotating HWND-based accessible elements. If the new value is a string, you can use SetHwndPropStr instead.
33func (obj *IAccPropServices) SetHwndProp(hwnd HWND, idObject int32, idChild uint32, idProp *MSAAPROPID, v *VARIANT) HRESULT {34ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetHwndProp, 6,35uintptr(unsafe.Pointer(obj)),36uintptr(hwnd),37uintptr(idObject),38uintptr(idChild),39uintptr(unsafe.Pointer(idProp)),40uintptr(unsafe.Pointer(v)))41return HRESULT(ret)42}
43
44// SetHwndPropStr wraps SetPropValue, providing a more convenient entry point for callers who are annotating HWND-based accessible elements.
45func (obj *IAccPropServices) SetHwndPropStr(hwnd HWND, idObject int32, idChild uint32, idProp *MSAAPROPID, str string) HRESULT {46str16, err := syscall.UTF16PtrFromString(str)47if err != nil {48return -((E_INVALIDARG ^ 0xFFFFFFFF) + 1)49}50ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetHwndPropStr, 6,51uintptr(unsafe.Pointer(obj)),52uintptr(hwnd),53uintptr(idObject),54uintptr(idChild),55uintptr(unsafe.Pointer(idProp)),56uintptr(unsafe.Pointer(str16)))57return HRESULT(ret)58}
59
60// SetHmenuProp wraps SetPropValue, providing a convenient entry point for callers who are annotating HMENU-based accessible elements. If the new value is a string, you can use IAccPropServices::SetHmenuPropStr instead.
61func (obj *IAccPropServices) SetHmenuProp(hmenu HMENU, idChild uint32, idProp *MSAAPROPID, v *VARIANT) HRESULT {62ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetHmenuProp, 5,63uintptr(unsafe.Pointer(obj)),64uintptr(hmenu),65uintptr(idChild),66uintptr(unsafe.Pointer(idProp)),67uintptr(unsafe.Pointer(v)),680)69return HRESULT(ret)70}
71
72// SetHmenuPropStr wraps SetPropValue, providing a more convenient entry point for callers who are annotating HMENU-based accessible elements.
73func (obj *IAccPropServices) SetHmenuPropStr(hmenu HMENU, idChild uint32, idProp *MSAAPROPID, str string) HRESULT {74str16, err := syscall.UTF16PtrFromString(str)75if err != nil {76return -((E_INVALIDARG ^ 0xFFFFFFFF) + 1)77}78ret, _, _ := syscall.Syscall6(obj.LpVtbl.SetHmenuPropStr, 5,79uintptr(unsafe.Pointer(obj)),80uintptr(hmenu),81uintptr(idChild),82uintptr(unsafe.Pointer(idProp)),83uintptr(unsafe.Pointer(str16)),840)85return HRESULT(ret)86}
87