22.2.1 レジストリハンドルオブジェクト

このオブジェクトは Windows の HKEY オブジェクトをラップし、 オブジェクトが破壊されたときに自動的にハンドルを閉じます。 オブジェクトの Close() メソッドと CloseKey() 関数 のどちらも、後始末がきちんと行われることを保証するために呼び出す ことができます。

このモジュールのレジストリ関数は全て、これらのハンドル オブジェクトの一つを返します。

このモジュールのレジストリ関数でハンドルオブジェクトを受理する ものは全て整数も受理しますが、ハンドルオブジェクトを利用する ことを推奨します。

ハンドルオブジェクトは __nonzero__() の意味構成を持ちます - すなわち、

    if handle:
        print "Yes"
は、ハンドルが現在有効な (閉じられたり切り離されたりしていない) 場合 には Yes となります。

ハンドルオブジェクトはまた、比較の意味構成もサポートしています。 このため、背後の Windows ハンドル値が同じものを複数のハンドルオブジェクト が参照している場合、それらの比較は真になります。

ハンドルオブジェクトは (例えば組み込みの int() 関数を 使って) 整数に変換することができます。この場合、背後の Windows ハンドル値が返されます、また、 Detach() メソッド を使って整数のハンドル値を返させると同時に、ハンドルオブジェクト から Windows ハンドルを切り離すこともできます。

Close( )
背後の Windows ハンドルを閉じます。

ハンドルがすでに閉じられていてもエラーは送出されません。

Detach( )
ハンドルオブジェクトから Windows ハンドルを切り離します。

切り離される以前にそのハンドルを保持していた整数 (または 64 ビット Windows の場合には長整数) オブジェクトが返されます。 ハンドルがすでに切り離されていたり閉じられていたりした場合、 ゼロが返されます。

この関数を呼び出した後、ハンドルは確実に無効化されますが、 閉じられるわけではありません。背後の Win32 ハンドルがハンドル オブジェクトよりも長く維持される必要がある場合にはこの 関数を呼び出すとよいでしょう。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。