##
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 ハンドルがハンドル オブジェクトよりも長く維持される必要がある場合にはこの 関数を呼び出すとよいでしょう。