ctypes库踩坑日记3

  • 1.调用win32的api
  • 2.最好让结构体和程序分开
  • 3.取完数据找到对应信息,创建code.py
  • 4.创建main.py,代码这样看着就很简洁

1.调用win32的api

task.py

from data import *
from code import *class Win32_Api(object):def __init__(self):self.__KERNEL32=windll.kernel32self.__USER32=windll.user32self.__GDI32=windll.gdi32def dump_dict(self, structure):"""传进来一个结构体,返回字典目前只解析单一结构体和嵌套结构体:param structure::return:"""info = {}if '_fields_' in dir(structure):for k, v in structure._fields_:av = getattr(structure, k)if type(v) == type(Structure):av = self.dump_dict(av)info[k] = avreturn infodef number_msg(self,number,msg):try:data=msg["code"].value[str(number)]return dataexcept:...#############################################################def GetTimeZoneInformation(self):"""检索当前的时区参数。这些参数控制协调世界时(UTC)与本地时间之间的转换。:return:"""GetTimeZoneInformation = self.__KERNEL32.GetTimeZoneInformationt = TIME_ZONE_INFORMATION()res = GetTimeZoneInformation(pointer(t))print("res", res)# 第一种取值方法# print("Bias",t.Bias)# print("StandardName",t.StandardName)# data = {#     "wYear": t.StandardDate.wYear,#     "wMonth": t.StandardDate.wMonth,#     "wDayOfWeek": t.StandardDate.wDayOfWeek,#     "wDay": t.StandardDate.wDay,#     "wHour": t.StandardDate.wHour,#     "wMinute": t.StandardDate.wMinute,#     "wSecond": t.StandardDate.wSecond,#     "wMilliseconds": t.StandardDate.wMilliseconds# }# print("StandardDate",data)# print("StandardBias",t.StandardBias)# print("DaylightName",t.DaylightName)# data={#     "wYear": t.DaylightDate.wYear,#     "wMonth": t.DaylightDate.wMonth,#     "wDayOfWeek": t.DaylightDate.wDayOfWeek,#     "wDay": t.DaylightDate.wDay,#     "wHour": t.DaylightDate.wHour,#     "wMinute": t.DaylightDate.wMinute,#     "wSecond": t.DaylightDate.wSecond,#     "wMilliseconds": t.DaylightDate.wMilliseconds# }# print("DaylightDate",data)# print("DaylightBias",t.DaylightBias)# 第二种取值方法(有对比,才有伤害,更能显出其他方法的便利)data = self.dump_dict(t)print("Data", data)def AnyPopup(self):"""AnyPopup功能表示屏幕上是否存在拥有,可见,顶级弹出窗口或重叠窗口。该函数搜索整个Windows屏幕,而不仅仅是呼叫应用程序的客户端区域。:return:如果弹出窗口存在,则返回值不为零,即使弹出窗口被其他窗口完全覆盖。如果弹出窗口不存在,返回值为零。"""AnyPopup=self.__USER32.AnyPopupres=AnyPopup()print("res",res)def GetACP(self):""":return:"""res = self.__KERNEL32.GetACP()print("res:", res)msg=self.number_msg(res,GetACP_code)print(msg)# 936

2.最好让结构体和程序分开

创建data.py

from ctypes import *
from ctypes.wintypes import *class SYSTEMTIME(Structure):"""SYSTEMTIME结构表示使用个人成员进行月,日,工作日,小时,分钟,秒和毫秒的日期和时间"""_fields_ = [("wYear", WORD),("wMonth", WORD),("wDayOfWeek", WORD),("wDay", WORD),("wHour", WORD),("wMinute", WORD),("wSecond", WORD),("wMilliseconds", DWORD)]class TIME_ZONE_INFORMATION(Structure):"""TIME_ZONE_INFORMATION结构指定特定于时区的信息"""_fields_=[("Bias",LONG),("StandardName",WCHAR*32),("StandardDate",SYSTEMTIME),("StandardBias",LONG),("DaylightName",WCHAR*32),("DaylightDate",SYSTEMTIME),("DaylightBias",LONG)]

实现原理:你给他想要的数据结构,他把得到的数据填充到你给的数据结构当中,你再取值,就是这么简单

3.取完数据找到对应信息,创建code.py

from enum import Enum,unique@unique
class GetACP_code(Enum):code={"874":"泰国","932":"日本","936":"中国人(中国,新加坡)","949":"朝鲜的","950":"中文(台湾,香港)","1200":"Unicode(ISO 10646的BMP)","1250":"Windows 3.1东欧","1251":"Windows 3.1西里尔文","1252":"Windows 3.1 Latin 1(美国,西欧)","1253":"Windows 3.1希腊语","1254":"Windows 3.1土耳其语","1255":"希伯来语","1256":"阿拉伯","1257":"波罗的海的"}

4.创建main.py,代码这样看着就很简洁

from task import Win32_Apidef main():cc = Win32_Api()cc.GetTimeZoneInformation()cc.AnyPopup()cc.GetACP()if __name__ == '__main__':main()

python内置库之学习ctypes库(三)--调用Win32API相关推荐

  1. python内置库之学习ctypes库(二)

    ctypes库踩坑日记2 一.自己实现一个dll文件,再用python的ctypes库调用思路1更清晰 二.生成dll文件 三.ctypes库调用 一.自己实现一个dll文件,再用python的cty ...

  2. python内置库之学习ctypes库(一)

    ctypes库踩坑日记1 1.引言(这里是讲的windows下调用的方式) 2.结构体 3.联合体(共用体) 和上面结构体用法类似,只不过这里继承的是`Union`类 4.进阶用法 5.接受返回的值 ...

  3. python内置函数open_Python学习教程:Python内置函数大总结(下篇)

    这里接着上次的 Python学习教程,给大家总结了Python 剩下的33个内置函数. 31 hash() 返回对象的哈希值 In [112]: hash(xiaoming)Out[112]: 613 ...

  4. python 内置函数 builtins_python学习笔记(七)——内置函数

    builtins.py模块,是python的内建模块,在运行时会自动导入该模块.在该模块中定义了很多我们常用的内置函数,比如print,input 等. 在 builtins.py 模块中给出如下注释 ...

  5. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  6. python内置标准库不可以处理的文件是_精华 | 140种Python标准库、第三方库和外部工具都有了...

    原标题:精华 | 140种Python标准库.第三方库和外部工具都有了 作者 | 宋天龙 来源 | 大数据(ID:hzdashuju) [导读]Python数据工具箱涵盖从数据源到数据可视化的完整流程 ...

  7. random输出1到10之间_第43P,随机数,Python内置库之random

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第43篇文章,第二阶段的课程:Python基础知识:Python内置库之random随机库. 学习本课程,建议先看一遍:[计算机基础 ...

  8. python内置函数用来返回列表、元组、字典_python程序设计第一章基础知识 题库及选解...

    由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 填空 1. Python安装扩展库常用的是()工具.(pip) 2. Python标准库m ...

  9. python内置库有哪些_python 内置库

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! version: 0. 2.0, configurations: }, de ...

最新文章

  1. Java培训出来后一般多少工资
  2. 互联网安全威胁及应对方案
  3. UltraTextEditor
  4. lamp黄金组合apache+mysql+php的安装
  5. 大数据预测:成都、郑州等跻身春节十大“瘦身”城市
  6. 解决安装完ubuntu登陆无root账户问题
  7. _Linux安装软件方法总结
  8. java request获取文件_request获取路径方式
  9. 浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息
  10. 女的喜欢OBC男的喜欢OGC的含义(转)
  11. stats | 广义线性模型(二)——泊松回归
  12. 自旋锁spin_lock
  13. 牛头刨床机构动力学的分析(C语言建模)
  14. Laravel 源码解读
  15. Windows高效文件搜索工具/Everything/Listary/uTools
  16. JavaScript实现浏览器本地的图像移动、大小调整和裁剪
  17. 树莓派3b+串口配置
  18. idea 启动项目找不到程序包,提示程序包不存在
  19. html5中给视频添加字幕
  20. python entry如何清空_如何清除tkinter中来自Entry小部件的以前输入?

热门文章

  1. JS Uncaught SyntaxError:Unexpected identifier异常报错原因及其解决方法
  2. VS调试时提示此项目已经过期
  3. MyBatis的插入后获得主键的方式
  4. 2022-2028年中国互联网+不良资产处置行业深度调研及投资前景预测报告
  5. 使用vscode连接服务器写代码指南
  6. 【JavaScript总结】JavaScript语法基础:数据类型
  7. 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
  8. TVM Reduction降低算力
  9. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建
  10. CentOS7 service network start命令启动时报错解决方法