ホーム › UI.Controls › GetCurrentThemeName
GetCurrentThemeName
関数現在使用中のテーマファイル名・色・サイズの名称を取得する。
シグネチャ
// UXTHEME.dll
#include <windows.h>
HRESULT GetCurrentThemeName(
LPWSTR pszThemeFileName,
INT cchMaxNameChars,
LPWSTR pszColorBuff, // optional
INT cchMaxColorChars,
LPWSTR pszSizeBuff, // optional
INT cchMaxSizeChars
);パラメーター
| 名前 | 型 | 方向 | 説明 |
|---|---|---|---|
| pszThemeFileName | LPWSTR | out | テーマのパスとファイル名を受け取る文字列へのポインターです。 |
| cchMaxNameChars | INT | in | テーマファイル名に許可される最大文字数を格納する int 型の値です。 |
| pszColorBuff | LPWSTR | outoptional | 配色名を受け取る文字列へのポインターです。このパラメーターには NULL を指定できます。 |
| cchMaxColorChars | INT | in | 配色名に許可される最大文字数を格納する int 型の値です。 |
| pszSizeBuff | LPWSTR | outoptional | サイズ名を受け取る文字列へのポインターです。このパラメーターには NULL を指定できます。 |
| cchMaxSizeChars | INT | in | サイズ名に許可される最大文字数を格納する int 型の値です。 |
戻り値の型: HRESULT
公式ドキュメント
現在のビジュアルスタイルの名前を取得します。オプションで、配色名およびサイズ名も取得します。
戻り値
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での呼び出し定義
// UXTHEME.dll
#include <windows.h>
HRESULT GetCurrentThemeName(
LPWSTR pszThemeFileName,
INT cchMaxNameChars,
LPWSTR pszColorBuff, // optional
INT cchMaxColorChars,
LPWSTR pszSizeBuff, // optional
INT cchMaxSizeChars
);[DllImport("UXTHEME.dll", ExactSpelling = true)]
static extern int GetCurrentThemeName(
[MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pszThemeFileName, // LPWSTR out
int cchMaxNameChars, // INT
[MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pszColorBuff, // LPWSTR optional, out
int cchMaxColorChars, // INT
[MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pszSizeBuff, // LPWSTR optional, out
int cchMaxSizeChars // INT
);<DllImport("UXTHEME.dll", ExactSpelling:=True)>
Public Shared Function GetCurrentThemeName(
<MarshalAs(UnmanagedType.LPWStr)> pszThemeFileName As System.Text.StringBuilder, ' LPWSTR out
cchMaxNameChars As Integer, ' INT
<MarshalAs(UnmanagedType.LPWStr)> pszColorBuff As System.Text.StringBuilder, ' LPWSTR optional, out
cchMaxColorChars As Integer, ' INT
<MarshalAs(UnmanagedType.LPWStr)> pszSizeBuff As System.Text.StringBuilder, ' LPWSTR optional, out
cchMaxSizeChars As Integer ' INT
) As Integer
End Function' pszThemeFileName : LPWSTR out
' cchMaxNameChars : INT
' pszColorBuff : LPWSTR optional, out
' cchMaxColorChars : INT
' pszSizeBuff : LPWSTR optional, out
' cchMaxSizeChars : INT
Declare PtrSafe Function GetCurrentThemeName Lib "uxtheme" ( _
ByVal pszThemeFileName As LongPtr, _
ByVal cchMaxNameChars As Long, _
ByVal pszColorBuff As LongPtr, _
ByVal cchMaxColorChars As Long, _
ByVal pszSizeBuff As LongPtr, _
ByVal cchMaxSizeChars As Long) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
GetCurrentThemeName = ctypes.windll.uxtheme.GetCurrentThemeName
GetCurrentThemeName.restype = ctypes.c_int
GetCurrentThemeName.argtypes = [
wintypes.LPWSTR, # pszThemeFileName : LPWSTR out
ctypes.c_int, # cchMaxNameChars : INT
wintypes.LPWSTR, # pszColorBuff : LPWSTR optional, out
ctypes.c_int, # cchMaxColorChars : INT
wintypes.LPWSTR, # pszSizeBuff : LPWSTR optional, out
ctypes.c_int, # cchMaxSizeChars : INT
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('UXTHEME.dll')
GetCurrentThemeName = Fiddle::Function.new(
lib['GetCurrentThemeName'],
[
Fiddle::TYPE_VOIDP, # pszThemeFileName : LPWSTR out
Fiddle::TYPE_INT, # cchMaxNameChars : INT
Fiddle::TYPE_VOIDP, # pszColorBuff : LPWSTR optional, out
Fiddle::TYPE_INT, # cchMaxColorChars : INT
Fiddle::TYPE_VOIDP, # pszSizeBuff : LPWSTR optional, out
Fiddle::TYPE_INT, # cchMaxSizeChars : INT
],
Fiddle::TYPE_INT)#[link(name = "uxtheme")]
extern "system" {
fn GetCurrentThemeName(
pszThemeFileName: *mut u16, // LPWSTR out
cchMaxNameChars: i32, // INT
pszColorBuff: *mut u16, // LPWSTR optional, out
cchMaxColorChars: i32, // INT
pszSizeBuff: *mut u16, // LPWSTR optional, out
cchMaxSizeChars: i32 // INT
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("UXTHEME.dll")]
public static extern int GetCurrentThemeName([MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pszThemeFileName, int cchMaxNameChars, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pszColorBuff, int cchMaxColorChars, [MarshalAs(UnmanagedType.LPWStr)] System.Text.StringBuilder pszSizeBuff, int cchMaxSizeChars);
"@
$api = Add-Type -MemberDefinition $sig -Name 'UXTHEME_GetCurrentThemeName' -Namespace Win32 -PassThru
# $api::GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars)#uselib "UXTHEME.dll"
#func global GetCurrentThemeName "GetCurrentThemeName" sptr, sptr, sptr, sptr, sptr, sptr
; GetCurrentThemeName varptr(pszThemeFileName), cchMaxNameChars, varptr(pszColorBuff), cchMaxColorChars, varptr(pszSizeBuff), cchMaxSizeChars ; 戻り値は stat
; pszThemeFileName : LPWSTR out -> "sptr"
; cchMaxNameChars : INT -> "sptr"
; pszColorBuff : LPWSTR optional, out -> "sptr"
; cchMaxColorChars : INT -> "sptr"
; pszSizeBuff : LPWSTR optional, out -> "sptr"
; cchMaxSizeChars : INT -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "UXTHEME.dll" #cfunc global GetCurrentThemeName "GetCurrentThemeName" var, int, var, int, var, int ; res = GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars) ; pszThemeFileName : LPWSTR out -> "var" ; cchMaxNameChars : INT -> "int" ; pszColorBuff : LPWSTR optional, out -> "var" ; cchMaxColorChars : INT -> "int" ; pszSizeBuff : LPWSTR optional, out -> "var" ; cchMaxSizeChars : INT -> "int" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "UXTHEME.dll" #cfunc global GetCurrentThemeName "GetCurrentThemeName" sptr, int, sptr, int, sptr, int ; res = GetCurrentThemeName(varptr(pszThemeFileName), cchMaxNameChars, varptr(pszColorBuff), cchMaxColorChars, varptr(pszSizeBuff), cchMaxSizeChars) ; pszThemeFileName : LPWSTR out -> "sptr" ; cchMaxNameChars : INT -> "int" ; pszColorBuff : LPWSTR optional, out -> "sptr" ; cchMaxColorChars : INT -> "int" ; pszSizeBuff : LPWSTR optional, out -> "sptr" ; cchMaxSizeChars : INT -> "int" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; HRESULT GetCurrentThemeName(LPWSTR pszThemeFileName, INT cchMaxNameChars, LPWSTR pszColorBuff, INT cchMaxColorChars, LPWSTR pszSizeBuff, INT cchMaxSizeChars) #uselib "UXTHEME.dll" #cfunc global GetCurrentThemeName "GetCurrentThemeName" var, int, var, int, var, int ; res = GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars) ; pszThemeFileName : LPWSTR out -> "var" ; cchMaxNameChars : INT -> "int" ; pszColorBuff : LPWSTR optional, out -> "var" ; cchMaxColorChars : INT -> "int" ; pszSizeBuff : LPWSTR optional, out -> "var" ; cchMaxSizeChars : INT -> "int" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; HRESULT GetCurrentThemeName(LPWSTR pszThemeFileName, INT cchMaxNameChars, LPWSTR pszColorBuff, INT cchMaxColorChars, LPWSTR pszSizeBuff, INT cchMaxSizeChars) #uselib "UXTHEME.dll" #cfunc global GetCurrentThemeName "GetCurrentThemeName" intptr, int, intptr, int, intptr, int ; res = GetCurrentThemeName(varptr(pszThemeFileName), cchMaxNameChars, varptr(pszColorBuff), cchMaxColorChars, varptr(pszSizeBuff), cchMaxSizeChars) ; pszThemeFileName : LPWSTR out -> "intptr" ; cchMaxNameChars : INT -> "int" ; pszColorBuff : LPWSTR optional, out -> "intptr" ; cchMaxColorChars : INT -> "int" ; pszSizeBuff : LPWSTR optional, out -> "intptr" ; cchMaxSizeChars : INT -> "int" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
uxtheme = windows.NewLazySystemDLL("UXTHEME.dll")
procGetCurrentThemeName = uxtheme.NewProc("GetCurrentThemeName")
)
// pszThemeFileName (LPWSTR out), cchMaxNameChars (INT), pszColorBuff (LPWSTR optional, out), cchMaxColorChars (INT), pszSizeBuff (LPWSTR optional, out), cchMaxSizeChars (INT)
r1, _, err := procGetCurrentThemeName.Call(
uintptr(pszThemeFileName),
uintptr(cchMaxNameChars),
uintptr(pszColorBuff),
uintptr(cchMaxColorChars),
uintptr(pszSizeBuff),
uintptr(cchMaxSizeChars),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction GetCurrentThemeName(
pszThemeFileName: PWideChar; // LPWSTR out
cchMaxNameChars: Integer; // INT
pszColorBuff: PWideChar; // LPWSTR optional, out
cchMaxColorChars: Integer; // INT
pszSizeBuff: PWideChar; // LPWSTR optional, out
cchMaxSizeChars: Integer // INT
): Integer; stdcall;
external 'UXTHEME.dll' name 'GetCurrentThemeName';result := DllCall("UXTHEME\GetCurrentThemeName"
, "Ptr", pszThemeFileName ; LPWSTR out
, "Int", cchMaxNameChars ; INT
, "Ptr", pszColorBuff ; LPWSTR optional, out
, "Int", cchMaxColorChars ; INT
, "Ptr", pszSizeBuff ; LPWSTR optional, out
, "Int", cchMaxSizeChars ; INT
, "Int") ; return: HRESULT●GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars) = DLL("UXTHEME.dll", "int GetCurrentThemeName(char*, int, char*, int, char*, int)")
# 呼び出し: GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars)
# pszThemeFileName : LPWSTR out -> "char*"
# cchMaxNameChars : INT -> "int"
# pszColorBuff : LPWSTR optional, out -> "char*"
# cchMaxColorChars : INT -> "int"
# pszSizeBuff : LPWSTR optional, out -> "char*"
# cchMaxSizeChars : INT -> "int"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。const std = @import("std");
extern "uxtheme" fn GetCurrentThemeName(
pszThemeFileName: [*c]u16, // LPWSTR out
cchMaxNameChars: i32, // INT
pszColorBuff: [*c]u16, // LPWSTR optional, out
cchMaxColorChars: i32, // INT
pszSizeBuff: [*c]u16, // LPWSTR optional, out
cchMaxSizeChars: i32 // INT
) callconv(std.os.windows.WINAPI) i32;proc GetCurrentThemeName(
pszThemeFileName: ptr uint16, # LPWSTR out
cchMaxNameChars: int32, # INT
pszColorBuff: ptr uint16, # LPWSTR optional, out
cchMaxColorChars: int32, # INT
pszSizeBuff: ptr uint16, # LPWSTR optional, out
cchMaxSizeChars: int32 # INT
): int32 {.importc: "GetCurrentThemeName", stdcall, dynlib: "UXTHEME.dll".}pragma(lib, "uxtheme");
extern(Windows)
int GetCurrentThemeName(
wchar* pszThemeFileName, // LPWSTR out
int cchMaxNameChars, // INT
wchar* pszColorBuff, // LPWSTR optional, out
int cchMaxColorChars, // INT
wchar* pszSizeBuff, // LPWSTR optional, out
int cchMaxSizeChars // INT
);ccall((:GetCurrentThemeName, "UXTHEME.dll"), stdcall, Int32,
(Ptr{UInt16}, Int32, Ptr{UInt16}, Int32, Ptr{UInt16}, Int32),
pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars)
# pszThemeFileName : LPWSTR out -> Ptr{UInt16}
# cchMaxNameChars : INT -> Int32
# pszColorBuff : LPWSTR optional, out -> Ptr{UInt16}
# cchMaxColorChars : INT -> Int32
# pszSizeBuff : LPWSTR optional, out -> Ptr{UInt16}
# cchMaxSizeChars : INT -> Int32
# stdcall は 32bit のみ意味を持つ(x64 では無視)。local ffi = require("ffi")
ffi.cdef[[
int32_t GetCurrentThemeName(
uint16_t* pszThemeFileName,
int32_t cchMaxNameChars,
uint16_t* pszColorBuff,
int32_t cchMaxColorChars,
uint16_t* pszSizeBuff,
int32_t cchMaxSizeChars);
]]
local uxtheme = ffi.load("uxtheme")
-- uxtheme.GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars)
-- pszThemeFileName : LPWSTR out
-- cchMaxNameChars : INT
-- pszColorBuff : LPWSTR optional, out
-- cchMaxColorChars : INT
-- pszSizeBuff : LPWSTR optional, out
-- cchMaxSizeChars : INT
-- 構造体/GUIDへのポインタは cdef が通るよう void* で表記(実型は各引数コメント参照)。値渡し構造体・enum は対応する typedef を cdef に追加すること。const koffi = require('koffi');
const lib = koffi.load('UXTHEME.dll');
const GetCurrentThemeName = lib.func('__stdcall', 'GetCurrentThemeName', 'int32_t', ['uint16_t *', 'int32_t', 'uint16_t *', 'int32_t', 'uint16_t *', 'int32_t']);
// GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars)
// pszThemeFileName : LPWSTR out -> 'uint16_t *'
// cchMaxNameChars : INT -> 'int32_t'
// pszColorBuff : LPWSTR optional, out -> 'uint16_t *'
// cchMaxColorChars : INT -> 'int32_t'
// pszSizeBuff : LPWSTR optional, out -> 'uint16_t *'
// cchMaxSizeChars : INT -> 'int32_t'
// 出力ポインタは koffi.out(...) で包む。構造体は koffi.struct で定義。const lib = Deno.dlopen("UXTHEME.dll", {
GetCurrentThemeName: { parameters: ["buffer", "i32", "buffer", "i32", "buffer", "i32"], result: "i32" },
});
// lib.symbols.GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars)
// pszThemeFileName : LPWSTR out -> "buffer"
// cchMaxNameChars : INT -> "i32"
// pszColorBuff : LPWSTR optional, out -> "buffer"
// cchMaxColorChars : INT -> "i32"
// pszSizeBuff : LPWSTR optional, out -> "buffer"
// cchMaxSizeChars : INT -> "i32"
// 文字列引数は "buffer"(NUL 終端のバイト列を Uint8Array で渡す)。
// 値渡し構造体は { struct: [ ...field types... ] } を使用。<?php
$ffi = FFI::cdef(<<<C
int32_t GetCurrentThemeName(
uint16_t* pszThemeFileName,
int32_t cchMaxNameChars,
uint16_t* pszColorBuff,
int32_t cchMaxColorChars,
uint16_t* pszSizeBuff,
int32_t cchMaxSizeChars);
C, "UXTHEME.dll");
// $ffi->GetCurrentThemeName(pszThemeFileName, cchMaxNameChars, pszColorBuff, cchMaxColorChars, pszSizeBuff, cchMaxSizeChars);
// pszThemeFileName : LPWSTR out
// cchMaxNameChars : INT
// pszColorBuff : LPWSTR optional, out
// cchMaxColorChars : INT
// pszSizeBuff : LPWSTR optional, out
// cchMaxSizeChars : INT
// 構造体/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 Uxtheme extends StdCallLibrary {
Uxtheme INSTANCE = Native.load("uxtheme", Uxtheme.class);
int GetCurrentThemeName(
char[] pszThemeFileName, // LPWSTR out
int cchMaxNameChars, // INT
char[] pszColorBuff, // LPWSTR optional, out
int cchMaxColorChars, // INT
char[] pszSizeBuff, // LPWSTR optional, out
int cchMaxSizeChars // INT
);
}@[Link("uxtheme")]
lib LibUXTHEME
fun GetCurrentThemeName = GetCurrentThemeName(
pszThemeFileName : UInt16*, # LPWSTR out
cchMaxNameChars : Int32, # INT
pszColorBuff : UInt16*, # LPWSTR optional, out
cchMaxColorChars : Int32, # INT
pszSizeBuff : UInt16*, # LPWSTR optional, out
cchMaxSizeChars : Int32 # INT
) : Int32
end
# 構造体/GUID/enum は lib 内に対応する型定義が必要。
# 呼出規約: x64 は規約統一のため OK。x86(32bit)は WINAPI=stdcall だが Crystal の fun に stdcall 付与構文がなく非対応。import 'dart:ffi';
import 'package:ffi/ffi.dart';
typedef GetCurrentThemeNameNative = Int32 Function(Pointer<Utf16>, Int32, Pointer<Utf16>, Int32, Pointer<Utf16>, Int32);
typedef GetCurrentThemeNameDart = int Function(Pointer<Utf16>, int, Pointer<Utf16>, int, Pointer<Utf16>, int);
final GetCurrentThemeName = DynamicLibrary.open('UXTHEME.dll')
.lookupFunction<GetCurrentThemeNameNative, GetCurrentThemeNameDart>('GetCurrentThemeName');
// pszThemeFileName : LPWSTR out -> Pointer<Utf16>
// cchMaxNameChars : INT -> Int32
// pszColorBuff : LPWSTR optional, out -> Pointer<Utf16>
// cchMaxColorChars : INT -> Int32
// pszSizeBuff : LPWSTR optional, out -> Pointer<Utf16>
// cchMaxSizeChars : INT -> Int32
// 文字列は package:ffi の "...".toNativeUtf16()/toNativeUtf8() で変換。{$mode objfpc}{$H+}
function GetCurrentThemeName(
pszThemeFileName: PWideChar; // LPWSTR out
cchMaxNameChars: Integer; // INT
pszColorBuff: PWideChar; // LPWSTR optional, out
cchMaxColorChars: Integer; // INT
pszSizeBuff: PWideChar; // LPWSTR optional, out
cchMaxSizeChars: Integer // INT
): Integer; stdcall;
external 'UXTHEME.dll' name 'GetCurrentThemeName';import Foreign
import Foreign.C.Types
import Foreign.C.String
foreign import stdcall safe "GetCurrentThemeName"
c_GetCurrentThemeName :: CWString -> Int32 -> CWString -> Int32 -> CWString -> Int32 -> IO Int32
-- pszThemeFileName : LPWSTR out -> CWString
-- cchMaxNameChars : INT -> Int32
-- pszColorBuff : LPWSTR optional, out -> CWString
-- cchMaxColorChars : INT -> Int32
-- pszSizeBuff : LPWSTR optional, out -> CWString
-- cchMaxSizeChars : INT -> Int32
-- 要 GHC(Windows)。stdcall は x64 では ccall として扱われる。ブロックする API は safe 呼び出し推奨。open Ctypes
open Foreign
let getcurrentthemename =
foreign "GetCurrentThemeName"
((ptr uint16_t) @-> int32_t @-> (ptr uint16_t) @-> int32_t @-> (ptr uint16_t) @-> int32_t @-> returning int32_t)
(* pszThemeFileName : LPWSTR out -> (ptr uint16_t) *)
(* cchMaxNameChars : INT -> int32_t *)
(* pszColorBuff : LPWSTR optional, out -> (ptr uint16_t) *)
(* cchMaxColorChars : INT -> int32_t *)
(* pszSizeBuff : LPWSTR optional, out -> (ptr uint16_t) *)
(* cchMaxSizeChars : INT -> int32_t *)
(* foreign は cdecl 前提。x64 Windows では WINAPI と一致。構造体は ctypes structure を定義のこと。 *)(cffi:define-foreign-library uxtheme (t "UXTHEME.dll"))
(cffi:use-foreign-library uxtheme)
(cffi:defcfun ("GetCurrentThemeName" get-current-theme-name :convention :stdcall) :int32
(psz-theme-file-name :pointer) ; LPWSTR out
(cch-max-name-chars :int32) ; INT
(psz-color-buff :pointer) ; LPWSTR optional, out
(cch-max-color-chars :int32) ; INT
(psz-size-buff :pointer) ; LPWSTR optional, out
(cch-max-size-chars :int32)) ; INT
; isize/usize(INT_PTR/SIZE_T)は x64 前提で :int64/:uint64。x86 では :int32/:uint32。use Win32::API;
my $GetCurrentThemeName = Win32::API::More->new('UXTHEME',
'int GetCurrentThemeName(LPWSTR pszThemeFileName, int cchMaxNameChars, LPWSTR pszColorBuff, int cchMaxColorChars, LPWSTR pszSizeBuff, int cchMaxSizeChars)');
# my $ret = $GetCurrentThemeName->Call($pszThemeFileName, $cchMaxNameChars, $pszColorBuff, $cchMaxColorChars, $pszSizeBuff, $cchMaxSizeChars);
# pszThemeFileName : LPWSTR out -> LPWSTR
# cchMaxNameChars : INT -> int
# pszColorBuff : LPWSTR optional, out -> LPWSTR
# cchMaxColorChars : INT -> int
# pszSizeBuff : LPWSTR optional, out -> LPWSTR
# cchMaxSizeChars : INT -> int
# 値渡し構造体は pack() した文字列、または Win32::API::Struct を使用。