我们从Python开源项目中,提取了以下20个代码示例,用于说明如何使用ctypes.wintypes.HINSTANCE。
def hook_keyboard(callback): handle = None def low_level_callback(code, rparam, lparam): try: key_code = 0xFFFFFFFF & lparam[0] # key code callback(key_code, rparam & 0xFFFFFFFF) finally: return CallNextHookEx(handle, code, rparam, lparam) # The really big problem is the callback_pointer. # Once it goes out of scope, it is destroyed callback_pointer = CFUNCTYPE(c_int, c_int, wintypes.HINSTANCE, POINTER(c_void_p))(low_level_callback) __CALLBACK_POINTERS.append(callback_pointer) handle = SetWindowsHookExA(WH_KEYBOARD_LL, callback_pointer, GetModuleHandleA(None), 0) atexit.register(UnhookWindowsHookEx, handle) return handle
def hook_keyboard(): def handler(key_code, event_code): print("{0} {1}".format(hex(key_code), hex(event_code))) handle = None def low_level_callback(code, rparam, lparam): try: key_code = 0xFFFFFFFF & lparam[0] # key code handler(key_code, rparam & 0xFFFFFFFF) finally: return CallNextHookEx(handle, code, rparam, lparam) callback_pointer = CFUNCTYPE(c_int, c_int, wintypes.HINSTANCE, POINTER(c_void_p))(low_level_callback) handle = SetWindowsHookExA(WH_KEYBOARD_LL, callback_pointer, GetModuleHandleA(None), 0) atexit.register(UnhookWindowsHookEx, handle) def on_exit(): pass funcs.shell__pump_messages(on_exit)
def __init__(self, tzres_loc='tzres.dll'): # Load the user32 DLL so we can load strings from tzres user32 = ctypes.WinDLL('user32') # Specify the LoadStringW function user32.LoadStringW.argtypes = (wintypes.HINSTANCE, wintypes.UINT, wintypes.LPWSTR, ctypes.c_int) self.LoadStringW = user32.LoadStringW self._tzres = ctypes.WinDLL(tzres_loc) self.tzres_loc = tzres_loc
def hook_keyboard(): def handler(key_code, event_code): print("{0} {1}".format(hex(key_code), hex(event_code))) handle = [None] def low_level_callback(code, rparam, lparam): try: key_code = 0xFFFFFFFF & lparam[0] # key code handler(key_code, rparam & 0xFFFFFFFF) finally: return CallNextHookEx(handle[0], code, rparam, lparam) callback_pointer = CFUNCTYPE(c_int, c_int, wintypes.HINSTANCE, POINTER(c_void_p))(low_level_callback) handle[0] = SetWindowsHookExA(WH_KEYBOARD_LL, callback_pointer, GetModuleHandleA(None), 0) atexit.register(UnhookWindowsHookEx, handle[0]) # Message pumper message = wintypes.MSG() while True: msg = GetMessageW(byref(message), 0, 0, 0) if msg == -1: UnhookWindowsHookEx(handle[0]) sys.exit(0) elif msg == 0: # GetMessage return 0 only if WM_QUIT sys.exit(0) else: TranslateMessage(byref(message)) DispatchMessageW(byref(message))