• Python C :ctypes库


    >>> import ctypes
    >>> from ctypes import *
    >>> dir(ctypes)
    ['ARRAY', 'ArgumentError', 'Array', 'BigEndianStructure', 'CDLL', 'CFUNCTYPE', '
    DEFAULT_MODE', 'DllCanUnloadNow', 'DllGetClassObject', 'FormatError', 'GetLastEr
    ror', '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_U
    SE_LASTERROR', '_Pointer', '_SimpleCData', '__builtins__', '__doc__', '__file__'
    , '__name__', '__package__', '__path__', '__version__', '_c_functype_cache', '_c
    alcsize', '_cast', '_cast_addr', '_check_HRESULT', '_check_size', '_ctypes_versi
    on', '_dlopen', '_endian', '_memmove_addr', '_memset_addr', '_os', '_pointer_typ
    e_cache', '_string_at', '_string_at_addr', '_sys', '_win_functype_cache', '_wstr
    ing_at', '_wstring_at_addr', 'addressof', 'alignment', 'byref', 'c_bool', 'c_buf
    fer', '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_shor
    t', 'c_size_t', 'c_ubyte', 'c_uint', 'c_uint16', 'c_uint32', 'c_uint64', 'c_uint
    8', 'c_ulong', 'c_ulonglong', 'c_ushort', 'c_void_p', 'c_voidp', 'c_wchar', 'c_w
    char_p', 'cast', 'cdll', 'create_string_buffer', 'create_unicode_buffer', 'get_e
    rrno', 'get_last_error', 'memmove', 'memset', 'oledll', 'pointer', 'py_object',
    'pydll', 'pythonapi', 'resize', 'set_conversion_mode', 'set_errno', 'set_last_er
    ror', '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了。。。。。。。。
    

      

  • 相关阅读:
    DevExpress v17.2新版亮点——CodeRush篇(三)
    DevExpress v17.2新版亮点——CodeRush篇(二)
    DevExpress v17.2新版亮点——CodeRush篇(一)
    MySQL性能优化
    什么是MongoDB?
    Redis的两种持久化方式对比
    Redis
    十六、Node.js-fs模块-流
    js中const,var,let区别
    十五、Node.js-fs模块(中)
  • 原文地址:https://www.cnblogs.com/ribavnu/p/4820493.html
Copyright © 2020-2023  润新知