本文共 1961 字,大约阅读时间需要 6 分钟。
>>> import ctypes>>> from ctypes import *>>> dir(ctypes)['ARRAY', 'ArgumentError', 'Array', 'BigEndianStructure', 'CDLL', 'CFUNCTYPE', 'DEFAULT_MODE', 'DllCanUnloadNow', 'DllGetClassObject', 'FormatError', 'GetLastError', 'HRESULT', 'LibraryLoader', 'LittleEndianStructure', 'OleDLL', 'POINTER','PYFUNCTYPE', 'PyDLL', 'RTLD_GLOBAL', 'RTLD_LOCAL', 'SetPointerType', 'Structure', 'Union', 'WINFUNCTYPE', 'WinDLL', 'WinError', '_CFuncPtr', '_FUNCFLAG_CDECL', '_FUNCFLAG_PYTHONAPI', '_FUNCFLAG_STDCALL', '_FUNCFLAG_USE_ERRNO', '_FUNCFLAG_USE_LASTERROR', '_Pointer', '_SimpleCData', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_c_functype_cache', '_calcsize', '_cast', '_cast_addr', '_check_HRESULT', '_check_size', '_ctypes_version', '_dlopen', '_endian', '_memmove_addr', '_memset_addr', '_os', '_pointer_type_cache', '_string_at', '_string_at_addr', '_sys', '_win_functype_cache', '_wstring_at', '_wstring_at_addr', 'addressof', 'alignment', 'byref', 'c_bool', 'c_buffer', 'c_byte', 'c_char', 'c_char_p', 'c_double', 'c_float', 'c_int', 'c_int16', 'c_int32', 'c_int64', 'c_int8', 'c_long', 'c_longdouble', 'c_longlong', 'c_short', 'c_size_t', 'c_ubyte', 'c_uint', 'c_uint16', 'c_uint32', 'c_uint64', 'c_uint8', 'c_ulong', 'c_ulonglong', 'c_ushort', 'c_void_p', 'c_voidp', 'c_wchar', 'c_wchar_p', 'cast', 'cdll', 'create_string_buffer', 'create_unicode_buffer', 'get_errno', 'get_last_error', 'memmove', 'memset', 'oledll', 'pointer', 'py_object','pydll', 'pythonapi', 'resize', 'set_conversion_mode', 'set_errno', 'set_last_error', 'sizeof', 'string_at', 'windll', 'wstring_at']一个这样的小玩意儿包含的东西还真不少啊,可以看到主要包括一些C语言的类型定义。当你import ctypes的时候,一些动态库已经载入了:>>> print(windll.kernel32)>>> print(windll.user32)>>> print(windll.msvcrt)直接来使用试试吧,我们最喜欢的自然是Hello World。这里直接调用MessageBox。查查MSDN,MessageBox在User32中,我们调用它。>>> MessageBox = windll.user32.MessageBoxW>>> MessageBox(0,"Great","Hello World", 0)然后,就调用了MessageBox了。。。。。。。。
转载地址:http://vzcha.baihongyu.com/