ホーム › System.Ole › OleLoadPicturePath
OleLoadPicturePath
関数URLまたはパスから画像を読み込みピクチャを作成する。
シグネチャ
// OLEAUT32.dll
#include <windows.h>
HRESULT OleLoadPicturePath(
LPWSTR szURLorPath,
IUnknown* punkCaller,
DWORD dwReserved,
DWORD clrReserved,
const GUID* riid,
void** ppvRet
);パラメーター
| 名前 | 型 | 方向 | 説明 |
|---|---|---|---|
| szURLorPath | LPWSTR | in | 開きたいファイルのパスまたは URL。 |
| punkCaller | IUnknown* | in | COM 集約のための IUnknown を指します。 |
| dwReserved | DWORD | in | 予約済み。 |
| clrReserved | DWORD | in | 透明として予約したい色。 |
| riid | GUID* | in | ppvRet に返すインターフェイスポインターの型を示すインターフェイスの識別子への参照。 |
| ppvRet | void** | out | riid で要求されたインターフェイスポインターを受け取るポインター変数のアドレス。正常に返ると、ppvRet にはモニカーによって識別されるオブジェクトのストレージ上で要求されたインターフェイスポインターが格納されます。ppvRet が非 NULL の場合、この関数はそのインターフェイスに対して IUnknown::AddRef を呼び出します。IUnknown::Release を呼び出すのは呼び出し側の責任です。エラーが発生した場合、*ppvRet は NULL に設定されます。 |
戻り値の型: HRESULT
公式ドキュメント
新しいピクチャオブジェクトを作成し、ストリームの内容で初期化します。これは OleCreatePictureIndirect(NULL, ...) を呼び出した後に IPersistStream::Load を呼び出すことと同等です。
戻り値
この関数は、標準の戻り値 E_OUTOFMEMORY および E_UNEXPECTED に加えて、以下をサポートします。
| 戻り値 | 説明 |
|---|---|
| ダイアログボックスが正常に作成されました。 | |
| ピクチャストリームを読み込めませんでした。 | |
| ppvRet のアドレスが NULL です。 | |
| オブジェクトが riid で指定されたインターフェイスをサポートしていません。 |
解説(Remarks)
ストリームは BMP (ビットマップ)、JPEG、WMF (メタファイル)、ICO (アイコン)、または GIF 形式である必要があります。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// OLEAUT32.dll
#include <windows.h>
HRESULT OleLoadPicturePath(
LPWSTR szURLorPath,
IUnknown* punkCaller,
DWORD dwReserved,
DWORD clrReserved,
const GUID* riid,
void** ppvRet
);[DllImport("OLEAUT32.dll", ExactSpelling = true)]
static extern int OleLoadPicturePath(
[MarshalAs(UnmanagedType.LPWStr)] string szURLorPath, // LPWSTR
IntPtr punkCaller, // IUnknown*
uint dwReserved, // DWORD
uint clrReserved, // DWORD
ref Guid riid, // GUID*
IntPtr ppvRet // void** out
);<DllImport("OLEAUT32.dll", ExactSpelling:=True)>
Public Shared Function OleLoadPicturePath(
<MarshalAs(UnmanagedType.LPWStr)> szURLorPath As String, ' LPWSTR
punkCaller As IntPtr, ' IUnknown*
dwReserved As UInteger, ' DWORD
clrReserved As UInteger, ' DWORD
ByRef riid As Guid, ' GUID*
ppvRet As IntPtr ' void** out
) As Integer
End Function' szURLorPath : LPWSTR
' punkCaller : IUnknown*
' dwReserved : DWORD
' clrReserved : DWORD
' riid : GUID*
' ppvRet : void** out
Declare PtrSafe Function OleLoadPicturePath Lib "oleaut32" ( _
ByVal szURLorPath As LongPtr, _
ByVal punkCaller As LongPtr, _
ByVal dwReserved As Long, _
ByVal clrReserved As Long, _
ByVal riid As LongPtr, _
ByVal ppvRet As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
OleLoadPicturePath = ctypes.windll.oleaut32.OleLoadPicturePath
OleLoadPicturePath.restype = ctypes.c_int
OleLoadPicturePath.argtypes = [
wintypes.LPCWSTR, # szURLorPath : LPWSTR
ctypes.c_void_p, # punkCaller : IUnknown*
wintypes.DWORD, # dwReserved : DWORD
wintypes.DWORD, # clrReserved : DWORD
ctypes.c_void_p, # riid : GUID*
ctypes.c_void_p, # ppvRet : void** out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('OLEAUT32.dll')
OleLoadPicturePath = Fiddle::Function.new(
lib['OleLoadPicturePath'],
[
Fiddle::TYPE_VOIDP, # szURLorPath : LPWSTR
Fiddle::TYPE_VOIDP, # punkCaller : IUnknown*
-Fiddle::TYPE_INT, # dwReserved : DWORD
-Fiddle::TYPE_INT, # clrReserved : DWORD
Fiddle::TYPE_VOIDP, # riid : GUID*
Fiddle::TYPE_VOIDP, # ppvRet : void** out
],
Fiddle::TYPE_INT)#[link(name = "oleaut32")]
extern "system" {
fn OleLoadPicturePath(
szURLorPath: *mut u16, // LPWSTR
punkCaller: *mut core::ffi::c_void, // IUnknown*
dwReserved: u32, // DWORD
clrReserved: u32, // DWORD
riid: *const GUID, // GUID*
ppvRet: *mut *mut () // void** out
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("OLEAUT32.dll")]
public static extern int OleLoadPicturePath([MarshalAs(UnmanagedType.LPWStr)] string szURLorPath, IntPtr punkCaller, uint dwReserved, uint clrReserved, ref Guid riid, IntPtr ppvRet);
"@
$api = Add-Type -MemberDefinition $sig -Name 'OLEAUT32_OleLoadPicturePath' -Namespace Win32 -PassThru
# $api::OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet)#uselib "OLEAUT32.dll"
#func global OleLoadPicturePath "OleLoadPicturePath" sptr, sptr, sptr, sptr, sptr, sptr
; OleLoadPicturePath szURLorPath, punkCaller, dwReserved, clrReserved, varptr(riid), ppvRet ; 戻り値は stat
; szURLorPath : LPWSTR -> "sptr"
; punkCaller : IUnknown* -> "sptr"
; dwReserved : DWORD -> "sptr"
; clrReserved : DWORD -> "sptr"
; riid : GUID* -> "sptr"
; ppvRet : void** out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "OLEAUT32.dll" #cfunc global OleLoadPicturePath "OleLoadPicturePath" wstr, sptr, int, int, var, sptr ; res = OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet) ; szURLorPath : LPWSTR -> "wstr" ; punkCaller : IUnknown* -> "sptr" ; dwReserved : DWORD -> "int" ; clrReserved : DWORD -> "int" ; riid : GUID* -> "var" ; ppvRet : void** out -> "sptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "OLEAUT32.dll" #cfunc global OleLoadPicturePath "OleLoadPicturePath" wstr, sptr, int, int, sptr, sptr ; res = OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, varptr(riid), ppvRet) ; szURLorPath : LPWSTR -> "wstr" ; punkCaller : IUnknown* -> "sptr" ; dwReserved : DWORD -> "int" ; clrReserved : DWORD -> "int" ; riid : GUID* -> "sptr" ; ppvRet : void** out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; HRESULT OleLoadPicturePath(LPWSTR szURLorPath, IUnknown* punkCaller, DWORD dwReserved, DWORD clrReserved, GUID* riid, void** ppvRet) #uselib "OLEAUT32.dll" #cfunc global OleLoadPicturePath "OleLoadPicturePath" wstr, intptr, int, int, var, intptr ; res = OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet) ; szURLorPath : LPWSTR -> "wstr" ; punkCaller : IUnknown* -> "intptr" ; dwReserved : DWORD -> "int" ; clrReserved : DWORD -> "int" ; riid : GUID* -> "var" ; ppvRet : void** out -> "intptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; HRESULT OleLoadPicturePath(LPWSTR szURLorPath, IUnknown* punkCaller, DWORD dwReserved, DWORD clrReserved, GUID* riid, void** ppvRet) #uselib "OLEAUT32.dll" #cfunc global OleLoadPicturePath "OleLoadPicturePath" wstr, intptr, int, int, intptr, intptr ; res = OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, varptr(riid), ppvRet) ; szURLorPath : LPWSTR -> "wstr" ; punkCaller : IUnknown* -> "intptr" ; dwReserved : DWORD -> "int" ; clrReserved : DWORD -> "int" ; riid : GUID* -> "intptr" ; ppvRet : void** out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
oleaut32 = windows.NewLazySystemDLL("OLEAUT32.dll")
procOleLoadPicturePath = oleaut32.NewProc("OleLoadPicturePath")
)
// szURLorPath (LPWSTR), punkCaller (IUnknown*), dwReserved (DWORD), clrReserved (DWORD), riid (GUID*), ppvRet (void** out)
r1, _, err := procOleLoadPicturePath.Call(
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(szURLorPath))),
uintptr(punkCaller),
uintptr(dwReserved),
uintptr(clrReserved),
uintptr(riid),
uintptr(ppvRet),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction OleLoadPicturePath(
szURLorPath: PWideChar; // LPWSTR
punkCaller: Pointer; // IUnknown*
dwReserved: DWORD; // DWORD
clrReserved: DWORD; // DWORD
riid: PGUID; // GUID*
ppvRet: Pointer // void** out
): Integer; stdcall;
external 'OLEAUT32.dll' name 'OleLoadPicturePath';result := DllCall("OLEAUT32\OleLoadPicturePath"
, "WStr", szURLorPath ; LPWSTR
, "Ptr", punkCaller ; IUnknown*
, "UInt", dwReserved ; DWORD
, "UInt", clrReserved ; DWORD
, "Ptr", riid ; GUID*
, "Ptr", ppvRet ; void** out
, "Int") ; return: HRESULT●OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet) = DLL("OLEAUT32.dll", "int OleLoadPicturePath(char*, void*, dword, dword, void*, void*)")
# 呼び出し: OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet)
# szURLorPath : LPWSTR -> "char*"
# punkCaller : IUnknown* -> "void*"
# dwReserved : DWORD -> "dword"
# clrReserved : DWORD -> "dword"
# riid : GUID* -> "void*"
# ppvRet : void** out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "oleaut32" fn OleLoadPicturePath(
szURLorPath: [*c]const u16, // LPWSTR
punkCaller: ?*anyopaque, // IUnknown*
dwReserved: u32, // DWORD
clrReserved: u32, // DWORD
riid: [*c]GUID, // GUID*
ppvRet: ?*anyopaque // void** out
) callconv(std.os.windows.WINAPI) i32;proc OleLoadPicturePath(
szURLorPath: WideCString, # LPWSTR
punkCaller: pointer, # IUnknown*
dwReserved: uint32, # DWORD
clrReserved: uint32, # DWORD
riid: ptr GUID, # GUID*
ppvRet: pointer # void** out
): int32 {.importc: "OleLoadPicturePath", stdcall, dynlib: "OLEAUT32.dll".}pragma(lib, "oleaut32");
extern(Windows)
int OleLoadPicturePath(
const(wchar)* szURLorPath, // LPWSTR
void* punkCaller, // IUnknown*
uint dwReserved, // DWORD
uint clrReserved, // DWORD
GUID* riid, // GUID*
void** ppvRet // void** out
);ccall((:OleLoadPicturePath, "OLEAUT32.dll"), stdcall, Int32,
(Cwstring, Ptr{Cvoid}, UInt32, UInt32, Ptr{GUID}, Ptr{Cvoid}),
szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet)
# szURLorPath : LPWSTR -> Cwstring
# punkCaller : IUnknown* -> Ptr{Cvoid}
# dwReserved : DWORD -> UInt32
# clrReserved : DWORD -> UInt32
# riid : GUID* -> Ptr{GUID}
# ppvRet : void** out -> Ptr{Cvoid}
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
int32_t OleLoadPicturePath(
const uint16_t* szURLorPath,
void* punkCaller,
uint32_t dwReserved,
uint32_t clrReserved,
void* riid,
void** ppvRet);
]]
local oleaut32 = ffi.load("oleaut32")
-- oleaut32.OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet)
-- szURLorPath : LPWSTR
-- punkCaller : IUnknown*
-- dwReserved : DWORD
-- clrReserved : DWORD
-- riid : GUID*
-- ppvRet : void** out
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('OLEAUT32.dll');
const OleLoadPicturePath = lib.func('__stdcall', 'OleLoadPicturePath', 'int32_t', ['str16', 'void *', 'uint32_t', 'uint32_t', 'void *', 'void *']);
// OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet)
// szURLorPath : LPWSTR -> 'str16'
// punkCaller : IUnknown* -> 'void *'
// dwReserved : DWORD -> 'uint32_t'
// clrReserved : DWORD -> 'uint32_t'
// riid : GUID* -> 'void *'
// ppvRet : void** out -> 'void *'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("OLEAUT32.dll", {
OleLoadPicturePath: { parameters: ["buffer", "pointer", "u32", "u32", "pointer", "pointer"], result: "i32" },
});
// lib.symbols.OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet)
// szURLorPath : LPWSTR -> "buffer"
// punkCaller : IUnknown* -> "pointer"
// dwReserved : DWORD -> "u32"
// clrReserved : DWORD -> "u32"
// riid : GUID* -> "pointer"
// ppvRet : void** out -> "pointer"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
int32_t OleLoadPicturePath(
const uint16_t* szURLorPath,
void* punkCaller,
uint32_t dwReserved,
uint32_t clrReserved,
void* riid,
void** ppvRet);
C, "OLEAUT32.dll");
// $ffi->OleLoadPicturePath(szURLorPath, punkCaller, dwReserved, clrReserved, riid, ppvRet);
// szURLorPath : LPWSTR
// punkCaller : IUnknown*
// dwReserved : DWORD
// clrReserved : DWORD
// riid : GUID*
// ppvRet : void** out
// 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。
// WINAPI(stdcall): x64 では呼出規約が統一されるため問題なし。x86 では __stdcall 対応のラッパが必要な場合あり。import com.sun.jna.*;
import com.sun.jna.ptr.*;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
public interface Oleaut32 extends StdCallLibrary {
Oleaut32 INSTANCE = Native.load("oleaut32", Oleaut32.class);
int OleLoadPicturePath(
WString szURLorPath, // LPWSTR
Pointer punkCaller, // IUnknown*
int dwReserved, // DWORD
int clrReserved, // DWORD
Pointer riid, // GUID*
Pointer ppvRet // void** out
);
}@[Link("oleaut32")]
lib LibOLEAUT32
fun OleLoadPicturePath = OleLoadPicturePath(
szURLorPath : UInt16*, # LPWSTR
punkCaller : Void*, # IUnknown*
dwReserved : UInt32, # DWORD
clrReserved : UInt32, # DWORD
riid : GUID*, # GUID*
ppvRet : Void** # void** out
) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef OleLoadPicturePathNative = Int32 Function(Pointer<Utf16>, Pointer<Void>, Uint32, Uint32, Pointer<Void>, Pointer<Void>);
typedef OleLoadPicturePathDart = int Function(Pointer<Utf16>, Pointer<Void>, int, int, Pointer<Void>, Pointer<Void>);
final OleLoadPicturePath = DynamicLibrary.open('OLEAUT32.dll')
.lookupFunction<OleLoadPicturePathNative, OleLoadPicturePathDart>('OleLoadPicturePath');
// szURLorPath : LPWSTR -> Pointer<Utf16>
// punkCaller : IUnknown* -> Pointer<Void>
// dwReserved : DWORD -> Uint32
// clrReserved : DWORD -> Uint32
// riid : GUID* -> Pointer<Void>
// ppvRet : void** out -> Pointer<Void>
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function OleLoadPicturePath(
szURLorPath: PWideChar; // LPWSTR
punkCaller: Pointer; // IUnknown*
dwReserved: DWORD; // DWORD
clrReserved: DWORD; // DWORD
riid: PGUID; // GUID*
ppvRet: Pointer // void** out
): Integer; stdcall;
external 'OLEAUT32.dll' name 'OleLoadPicturePath';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "OleLoadPicturePath"
c_OleLoadPicturePath :: CWString -> Ptr () -> Word32 -> Word32 -> Ptr () -> Ptr () -> IO Int32
-- szURLorPath : LPWSTR -> CWString
-- punkCaller : IUnknown* -> Ptr ()
-- dwReserved : DWORD -> Word32
-- clrReserved : DWORD -> Word32
-- riid : GUID* -> Ptr ()
-- ppvRet : void** out -> Ptr ()
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let oleloadpicturepath =
foreign "OleLoadPicturePath"
((ptr uint16_t) @-> (ptr void) @-> uint32_t @-> uint32_t @-> (ptr void) @-> (ptr void) @-> returning int32_t)
(* szURLorPath : LPWSTR -> (ptr uint16_t) *)
(* punkCaller : IUnknown* -> (ptr void) *)
(* dwReserved : DWORD -> uint32_t *)
(* clrReserved : DWORD -> uint32_t *)
(* riid : GUID* -> (ptr void) *)
(* ppvRet : void** out -> (ptr void) *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library oleaut32 (t "OLEAUT32.dll"))
(cffi:use-foreign-library oleaut32)
(cffi:defcfun ("OleLoadPicturePath" ole-load-picture-path :convention :stdcall) :int32
(sz-urlor-path (:string :encoding :utf-16le)) ; LPWSTR
(punk-caller :pointer) ; IUnknown*
(dw-reserved :uint32) ; DWORD
(clr-reserved :uint32) ; DWORD
(riid :pointer) ; GUID*
(ppv-ret :pointer)) ; void** out
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $OleLoadPicturePath = Win32::API::More->new('OLEAUT32',
'int OleLoadPicturePath(LPCWSTR szURLorPath, LPVOID punkCaller, DWORD dwReserved, DWORD clrReserved, LPVOID riid, LPVOID ppvRet)');
# my $ret = $OleLoadPicturePath->Call($szURLorPath, $punkCaller, $dwReserved, $clrReserved, $riid, $ppvRet);
# szURLorPath : LPWSTR -> LPCWSTR
# punkCaller : IUnknown* -> LPVOID
# dwReserved : DWORD -> DWORD
# clrReserved : DWORD -> DWORD
# riid : GUID* -> LPVOID
# ppvRet : void** out -> LPVOID
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。関連項目
公式の関連項目
- f OleLoadPicture — ストリームから画像を読み込みピクチャオブジェクトを作成する。
使用する型