183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehimport sys
283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsiehfrom ctypes import *
383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh
483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##class HMODULE(Structure):
583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##    _fields_ = [("value", c_void_p)]
683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh
783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##    def __repr__(self):
883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##        return "<HMODULE %s>" % self.value
983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh
1083760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##windll.kernel32.GetModuleHandleA.restype = HMODULE
1183760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh
1283760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##print windll.kernel32.GetModuleHandleA("python23.dll")
1383760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##print hex(sys.dllhandle)
1483760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh
1583760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##def nonzero(handle):
1683760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##    return (GetLastError(), handle)
1783760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh
1883760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##windll.kernel32.GetModuleHandleA.errcheck = nonzero
1983760d213fb3bec7b4117d266fcfbf6fe2ba14abAndrew Hsieh##print windll.kernel32.GetModuleHandleA("spam")
20