python 下Windows api函数的研究

基本思路 由于python是解释型程序 所以在使用Windows的一部分带有结构参数的api函数时 需要提前分配内存,此时我想到的方法是给变量分配二进制数b'000000000',最好多输入些0 以便能保存更多的结果。
下面例子是研究返回当前鼠标的坐标点 由于该api函数需要一个保存点的结构,但是在python中目前还没发现结构类型变量 因为是解释型语言  因此我定义一个初始化的变量cc,初始值为b'0000000000000000000000000',我调用user32.dll中的GetCursorPos()函数时,将其返回结果存入结构参数cc,同时我要检测函数是否执行成功,调用detector=win32api.GetLastError(上一次函数的返回码),返回值detector为0表示操作成功,下面我们执行下面的程序  分析输出结果:
import ctypes
from ctypes import cdll
from platform import *
import win32gui, win32api, win32con


#分配初始内存,以便保存GetCursorPos(cc)结构参数返回的结果
cc=b'0000000000000000000000000'
#加载32位的dll,因为我的python版本时32版本的,Win10的64位操作系统需要位于sysWow64下32位版本的#user32.dll

clib1 = cdll.LoadLibrary('user32.dll')
successNumber=clib1.GetCursorPos(cc)
detector=win32api.GetLastError(successNumber)
print("函数是否执行成功,返回错误编号,正确执行返回编号0:",detector)
validPos=win32api.GetCursorPos()
print("验证当前坐标:",validPos)
print("研究返回的坐标:",cc)
print("api函数是否执行成功,成功返回非零,失败返回0:",successNumber)
print("错误检测函数,操作成功返回0,失败返回错误编号:",detector)

输出结果,如果没有可显示字符 使用\x的形式,否则使用字符的ASCII码:

函数是否执行成功,返回错误编号,正确执行返回编号0: 0
验证当前坐标: (926, 593)
研究返回的坐标: b'\x9e\x03\x00\x00Q\x02\x00\x0000000000000000000'
api函数是否执行成功,成功返回非零,失败返回0: 1
错误检测函数,操作成功返回0,失败返回错误编号: 0

分析:

我们得到的返回值是 b'\x9e\x03\x00\x00Q\x02\x00\x0000000000000000000',其为16进制,由于我的是Intel处理器 属于小端编码 所以上面的结果正确读取应该是039e  0000 02Q 0000

十六进制039e==十进制926  返回正确

中间的\x00\x00最初我不知道是什么 但通过分析\x02Q发现 因为Q的ASCII码十进制是81,转为十六进制为\x51  而十六进制\x0251就是验证的十进制坐标593,至此 分析完成,以下验证图片

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 WINDPY接口说明 ................................................................................................. 1 1.1 WINDPY接口概述 ............................................................................................... 1 1.2 WINDPY接口安装 ............................................................................................... 2 1.2.1 WindPy对系统环境要求 ............................................................... 2 1.2.2 Python环境安装 .......................................................................... 2 1.2.3 正常WindPy接口安装 .................................................................. 3 1.2.4 特殊安装WindPy方式 .................................................................. 6 1.3 接口向导界面 ..................................................................................................... 6 1.4 WINDPY获取帮助途径 ....................................................................................... 7 1.4.1 本用户手册 .................................................................................... 7 1.4.2 量化交易群和R语言交流群 ........................................................... 7 1.5 WINDPY接口相关规范 ....................................................................................... 1 1.5.1 以下所有命令都有如下假设 ........................................................... 1 1.5.2 命令区分大小写,且“w.”不能省略 ............................................... 1 1.5.3 中文以及单字节码和双字节码的问题 ............................................. 1 1.5.4 品种、指标、参数等引号内的部分不区分大小写 ........................... 1 1.5.5 参数支持list输入 ...................................................................... 1 1.5.6 时间、日期支持Python语言的时间、日期格式 ........................... 2 1.5.7 参数中有缺省值的可以不用输入 .................................................... 2 1.5.8 可以带参数名输入 ......................................................................... 2 精于数据,一直进步 IV 1.5.9 Showblank参数 ........................................................................... 3 1.5.10 交易接口中Showfields参数................................................ 3 1.5.11 ErrorCode定义 .................................................................... 3 2 WIND PY插件命令说明 ....................................................................................... 1 2.1 FROM WINDPY IMPORT *:装载WINDPY包 ..................................................... 1 2.2 W.START:启动WINDPY ..................................................................................... 1 2.3 W.STOP:停止WINDPY ....................................................................................... 2 2.4 W.ISCONNECTED:判断是否已经登录 .............................................................. 2 2.5 W.CANCELREQUEST:取消订阅 .......................................................................... 2 2.6 W.WSD:获取历史序列数据 .............................................................................. 3 2.7 W.WSI:获取分钟数据 ...................................................................................... 3 2.8 W.WST:获取日内TICK级别数据 .................................................................... 4 2.9 W.WSS:获历史截面数据 .................................................................................. 5 2.10 W.WSQ:获取和订阅实时行情数据 ................................................................. 5 2.11 W.WSET:获取板块、指数等成分数据 ........................................................... 6 2.12 W.WEQS:获取条件选股结果 ............................................................................ 7 2.13 W.WPF:获取资产管理、组合管理数据 ......................................................... 7 2.14 交易相关函数 ..................................................................................................... 8 2.14.1 w.tlogon交易登录 ............................................................... 8 2.14.2 w.tlogout交易登出 ............................................................. 9 2.14.3 w.torder委托下单 ............................................................. 10 2.14.4 w.tcancel撤销委托 ........................................................... 11 精于数据,一直进步 V 2.14.5 w.tquery交易查询 ............................................................. 12 2.15 W.TDAYS, W.TDAYSOFFSET,W.TDAYSCOUNT:日期函数 ............................... 14 2.15.1 w.tdays:返回区间内的日期序列 ....................................... 14 2.15.2 w.tdaysoffset:返回某个偏移值对应的日期 ................... 14 2.15.3 w.tdayscount:返回某个区间内日期数量 ......................... 15 3 WINPY插件函数体说明........................................................................................ 1 3.1 日期序列(WSD)................................................................................................. 1 3.2 历史截面数据(WSS) ........................................................................................ 3 3.3 分钟序列(WSI)................................................................................................. 3 3.4 日内跳价(WST)................................................................................................. 4 3.5 实时数据(WSQ)................................................................................................. 5 3.6 数据集(WSET) ..............................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值