powc.core module#
基本的なCOM機能。他のCOMラッパーから使用される機能を提供します。
- class powc.core.ComResult(hr: int, value: T)#
ベースクラス:
GenericCOMメソッドまたは関数の結果を値とエラーコードとして保持します。最低限の機能のみ実装します。
- 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#
成否を判定せず値を返します。
- 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.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)