Win32 API 日本語リファレンス
ホームUI.Accessibility › ObjectFromLresult

ObjectFromLresult

関数
LRESULTからアクセシビリティオブジェクトを復元する。
DLLOLEACC.dll呼出規約winapi対応OSWindows XP 以降

シグネチャ

// OLEACC.dll
#include <windows.h>

HRESULT ObjectFromLresult(
    LRESULT lResult,
    const GUID* riid,
    WPARAM wParam,
    void** ppvObject
);

パラメーター

名前方向
lResultLRESULTin
riidGUID*in
wParamWPARAMin
ppvObjectvoid**out

戻り値の型: HRESULT

各言語での呼び出し定義

// OLEACC.dll
#include <windows.h>

HRESULT ObjectFromLresult(
    LRESULT lResult,
    const GUID* riid,
    WPARAM wParam,
    void** ppvObject
);
[DllImport("OLEACC.dll", ExactSpelling = true)]
static extern int ObjectFromLresult(
    IntPtr lResult,   // LRESULT
    ref Guid riid,   // GUID*
    UIntPtr wParam,   // WPARAM
    IntPtr ppvObject   // void** out
);
<DllImport("OLEACC.dll", ExactSpelling:=True)>
Public Shared Function ObjectFromLresult(
    lResult As IntPtr,   ' LRESULT
    ByRef riid As Guid,   ' GUID*
    wParam As UIntPtr,   ' WPARAM
    ppvObject As IntPtr   ' void** out
) As Integer
End Function
' lResult : LRESULT
' riid : GUID*
' wParam : WPARAM
' ppvObject : void** out
Declare PtrSafe Function ObjectFromLresult Lib "oleacc" ( _
    ByVal lResult As LongPtr, _
    ByVal riid As LongPtr, _
    ByVal wParam As LongPtr, _
    ByVal ppvObject As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。
import ctypes
from ctypes import wintypes

ObjectFromLresult = ctypes.windll.oleacc.ObjectFromLresult
ObjectFromLresult.restype = ctypes.c_int
ObjectFromLresult.argtypes = [
    ctypes.c_ssize_t,  # lResult : LRESULT
    ctypes.c_void_p,  # riid : GUID*
    ctypes.c_size_t,  # wParam : WPARAM
    ctypes.c_void_p,  # ppvObject : void** out
]
require 'fiddle'
require 'fiddle/import'

lib = Fiddle.dlopen('OLEACC.dll')
ObjectFromLresult = Fiddle::Function.new(
  lib['ObjectFromLresult'],
  [
    Fiddle::TYPE_INTPTR_T,  # lResult : LRESULT
    Fiddle::TYPE_VOIDP,  # riid : GUID*
    Fiddle::TYPE_UINTPTR_T,  # wParam : WPARAM
    Fiddle::TYPE_VOIDP,  # ppvObject : void** out
  ],
  Fiddle::TYPE_INT)
#[link(name = "oleacc")]
extern "system" {
    fn ObjectFromLresult(
        lResult: isize,  // LRESULT
        riid: *const GUID,  // GUID*
        wParam: usize,  // WPARAM
        ppvObject: *mut *mut ()  // void** out
    ) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.
$sig = @"
[DllImport("OLEACC.dll")]
public static extern int ObjectFromLresult(IntPtr lResult, ref Guid riid, UIntPtr wParam, IntPtr ppvObject);
"@
$api = Add-Type -MemberDefinition $sig -Name 'OLEACC_ObjectFromLresult' -Namespace Win32 -PassThru
# $api::ObjectFromLresult(lResult, riid, wParam, ppvObject)
#uselib "OLEACC.dll"
#func global ObjectFromLresult "ObjectFromLresult" sptr, sptr, sptr, sptr
; ObjectFromLresult lResult, varptr(riid), wParam, ppvObject   ; 戻り値は stat
; lResult : LRESULT -> "sptr"
; riid : GUID* -> "sptr"
; wParam : WPARAM -> "sptr"
; ppvObject : void** out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。
出力引数:
#uselib "OLEACC.dll"
#cfunc global ObjectFromLresult "ObjectFromLresult" sptr, var, sptr, sptr
; res = ObjectFromLresult(lResult, riid, wParam, ppvObject)
; lResult : LRESULT -> "sptr"
; riid : GUID* -> "var"
; wParam : WPARAM -> "sptr"
; ppvObject : void** out -> "sptr"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
出力引数:
; HRESULT ObjectFromLresult(LRESULT lResult, GUID* riid, WPARAM wParam, void** ppvObject)
#uselib "OLEACC.dll"
#cfunc global ObjectFromLresult "ObjectFromLresult" intptr, var, intptr, intptr
; res = ObjectFromLresult(lResult, riid, wParam, ppvObject)
; lResult : LRESULT -> "intptr"
; riid : GUID* -> "var"
; wParam : WPARAM -> "intptr"
; ppvObject : void** out -> "intptr"
; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。
import (
	"golang.org/x/sys/windows"
	"unsafe"
)

var (
	oleacc = windows.NewLazySystemDLL("OLEACC.dll")
	procObjectFromLresult = oleacc.NewProc("ObjectFromLresult")
)

// lResult (LRESULT), riid (GUID*), wParam (WPARAM), ppvObject (void** out)
r1, _, err := procObjectFromLresult.Call(
	uintptr(lResult),
	uintptr(riid),
	uintptr(wParam),
	uintptr(ppvObject),
)
_ = err  // syscall.Errno (valid when the call sets last-error)
_ = r1   // HRESULT
function ObjectFromLresult(
  lResult: NativeInt;   // LRESULT
  riid: PGUID;   // GUID*
  wParam: NativeUInt;   // WPARAM
  ppvObject: Pointer   // void** out
): Integer; stdcall;
  external 'OLEACC.dll' name 'ObjectFromLresult';
result := DllCall("OLEACC\ObjectFromLresult"
    , "Ptr", lResult   ; LRESULT
    , "Ptr", riid   ; GUID*
    , "UPtr", wParam   ; WPARAM
    , "Ptr", ppvObject   ; void** out
    , "Int")   ; return: HRESULT
●ObjectFromLresult(lResult, riid, wParam, ppvObject) = DLL("OLEACC.dll", "int ObjectFromLresult(int, void*, int, void*)")
# 呼び出し: ObjectFromLresult(lResult, riid, wParam, ppvObject)
# lResult : LRESULT -> "int"
# riid : GUID* -> "void*"
# wParam : WPARAM -> "int"
# ppvObject : void** out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。