powc.core module#

基本的なCOM機能。他のCOMラッパーから使用される機能を提供します。

class powc.core.CoTaskMem#

ベースクラス: c_void_p

COMメモリのラッパーです。

static alloc_bytes(bytes: int) CoTaskMem#
static alloc_unistr(s: str) CoTaskMem#
detatch() int#
class powc.core.ComResult(hr: int, value: T)#

ベースクラス: Generic

COMメソッドまたは関数の結果を値とエラーコードとして保持します。最低限の機能のみ実装します。

property hr#

エラーコード。

raise_always() NoReturn#

成否に関わらず例外を発生します。

raise_if_error() None#

失敗時のみ例外を発生します。

property success: bool#

成功時は真。

property value#

成否を判定して値を返します。失敗時は例外を発生します。 successや__bool__で有無を確認した場合はvalue_uncheckedの方が高速です。

property value_or_none: T | None#
property value_unchecked#

成否を判定せず値を返します。

class powc.core.IUnknownWrapper(o: Any)#

ベースクラス: Protocol

property wrapped_obj: c_void_p#
powc.core.check_hresult(hr: int) None#

COMエラーコードがエラーの場合に例外を発生します。 :param hr: COMエラーコード。0x80000000が含まれる場合はエラーです。 :type hr: int

例外:

WinError -- COMエラー。

サンプル

>>> from comtypes import hresult
>>> check_hresult(hresult.S_OK)
>>> check_hresult(hresult.S_FALSE)
>>> check_hresult(hresult.E_FAIL)
powc.core.cotaskmem(p: T) Iterator#

comtypes.c_void_p型等のCOMタスクメモリをスコープ脱出時に解放します。 .. rubric:: サンプル

>>> from ctypes import c_void_p
>>> with cotaskmem(c_void_p()) as p:
>>>     # pのcomtypes.byrefによる確保・使用
>>>     pass
powc.core.cotaskmem_alloc(size: int) c_void_p#

COMメモリを確保します。 .. rubric:: サンプル

>>> with cotaskmem(cotaskmemalloc(10)) as p:
>>>     # pの使用
>>>     pass
powc.core.cotaskmem_free(p: Any) None#

COMメモリを解放します。 .. rubric:: サンプル

>>> p = cotaskmemalloc(10)
>>> cotaskmemfree(p)
powc.core.cr(hr: int, value: T) ComResult#

ComResultクラスを作成する関数。記述の短縮に使用します。

powc.core.guid_from_define(a: int, b: int, c: int, d: int, e: int, f: int, g: int, h: int, i: int, j: int, k: int) GUID#

C++のGUID構造体形式でGUIDを作成します。

サンプル

>>> guid_from_define(0xFBF23B40, 0xE3F0, 0x101B, 0x84, 0x88, 0x00, 0xAA, 0x00, 0x3E, 0x56, 0xF8)
powc.core.hr(code: int) int#

Pythonのint型をWindowsのHRESULTに変換します。 Windows用のHRESULT定数をそのまま貼り付ける場合に使用します。

サンプル

>>> print(f"{hr(0x887A0002):X}")  # -7785FFFE
powc.core.query_interface(o: Any, interface_type: type[TIUnknown])#

comtypes.IUnknown派生インターフェイスを変換して返します。 :raises TypeError: oがPOINTER(comtypes.IUnknown)またはPOINTER(comtypes.IUnknown派生クラス)ではない

戻り値:

変換後のIUnknown派生インターフェイスインスタンス。

戻り値の型:

_type_

powc.core.raise_hresult(hr: int) NoReturn#

COMエラーに対応する例外を発生します。 :param hr: COMエラーコード :type hr: int

例外:

WinError -- COMエラー。

サンプル

>>> from comtypes import hresult
>>> raise_hresult(hresult.S_OK)