当前位置: 首页 > news >正文

ctypes helper

ctypes helper

# http://www.gamespp.com/directx/directInputKeyboardScanCodes.htmlimport ctypes user32 = ctypes.windll.user32
gdi32 = ctypes.windll.gdi32W = 0x11
A = 0x1E
S = 0x1F
D = 0x20
Z = 0x2C
UP = 0xC8
DOWN = 0xD0
LEFT = 0xCB
RIGHT = 0xCD
ENTER = 0x1C# C struct redefinitions
PUL = ctypes.POINTER(ctypes.c_ulong)
class KeyBdInput(ctypes.Structure):_fields_ = [("wVk", ctypes.c_ushort),("wScan", ctypes.c_ushort),("dwFlags", ctypes.c_ulong),("time", ctypes.c_ulong),("dwExtraInfo", PUL)]class HardwareInput(ctypes.Structure):_fields_ = [("uMsg", ctypes.c_ulong),("wParamL", ctypes.c_short),("wParamH", ctypes.c_ushort)]class MouseInput(ctypes.Structure):_fields_ = [("dx", ctypes.c_long),("dy", ctypes.c_long),("mouseData", ctypes.c_ulong),("dwFlags", ctypes.c_ulong),("time",ctypes.c_ulong),("dwExtraInfo", PUL)]class Input_I(ctypes.Union):_fields_ = [("ki", KeyBdInput),("mi", MouseInput),("hi", HardwareInput)]class Input(ctypes.Structure):_fields_ = [("type", ctypes.c_ulong),("ii", Input_I)]# Actuals Functionsdef holdKey(hexKeyCode):extra = ctypes.c_ulong(0)ii_ = Input_I()ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008, 0, ctypes.pointer(extra) )x = Input( ctypes.c_ulong(1), ii_ )user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))def releaseKey(hexKeyCode):extra = ctypes.c_ulong(0)ii_ = Input_I()ii_.ki = KeyBdInput( 0, hexKeyCode, 0x0008 | 0x0002, 0, ctypes.pointer(extra) )x = Input( ctypes.c_ulong(1), ii_ )user32.SendInput(1, ctypes.pointer(x), ctypes.sizeof(x))def pressKey(hexKeyCode):holdKey(hexKeyCode)releaseKey(hexKeyCode)# ------------------------------------------------------------
# Mouse Helpers
# ------------------------------------------------------------class POINT(ctypes.Structure):_fields_ = [("x", ctypes.c_long),("y", ctypes.c_long)]def get_mouse_pos():pt = POINT()user32.GetCursorPos(ctypes.byref(pt))return pt.x, pt.y# ------------------------------------------------------------
# Pixel Reader
# ------------------------------------------------------------def get_pixel(x, y):"""Fast pixel read using WinAPI GetPixel."""hdc = user32.GetDC(None)color = gdi32.GetPixel(hdc, x, y)user32.ReleaseDC(None, hdc)r = color & 0xFFg = (color >> 8) & 0xFFb = (color >> 16) & 0xFFreturn (r, g, b)

 

http://www.jsqmd.com/news/602797/

相关文章:

  • 革新性网页资源提取工具:猫抓让视频下载效率提升300%的秘密
  • 2026年通化外墙挤塑板价格排名,帮我找几家外墙挤塑板谁家好 - 工业推荐榜
  • 2026年白蚁监测设备厂家推荐:湖北金蚂蚁环境科技,水利工程/堤坝/建筑白蚁监测全系产品 - 品牌推荐官
  • OpenClaw+千问3.5-9B本地部署指南:5分钟完成AI助手搭建
  • CMOS逻辑门电路:从基础原理到实际应用设计
  • FastAPI 2.0异步流式响应安全性终极指南:3层加密+5道校验+7ms延迟阈值控制,已通过GDPR/AI Act双合规审计
  • 通化2026年外墙挤塑板口碑排名,实力强的厂家推荐 - 工业品网
  • 生信小白必看:PASA注释结果提取gff和fasta文件的保姆级教程
  • 口碑好的新疆旅游团全国哪些靠谱,选购时有啥要点? - 工业品网
  • Windows 11终极优化指南:如何使用Win11Debloat实现系统性能提升
  • 3大维度解锁BG3 Mod Manager潜能:构建高效博德之门3模组管理体系
  • MCP与A2A:AI协议收藏指南,小白程序员必看!掌握它们,让Agent高效协作
  • 为什么92%的FastAPI AI服务在流式响应阶段丢失OAuth2 scope校验?——基于200+生产环境trace数据的权威归因分析
  • AOT编译后体积暴涨200%?教你用Bloaty+objdump精准定位冗余符号,3步瘦身至原大小1.8×
  • 窗口尺寸控制器:突破系统限制的窗口调整方案
  • 什么是网站结构优化_它在 SEO 中的作用是什么_网站速度优化有哪些方法_它在 SEO 中的作用是什么
  • 用快马AI快速原型你的技能组合:一键生成个人技能展示页
  • Android 10年经验转AI应用开发:最快路径与资源清单
  • 2026年口碑好实力强的云南旅行社推荐:云南中茂国际旅行社 - 深度智识库
  • AI辅助开发新思路:让快马AI理解自然语言,自动生成分区数据智能查询系统
  • Smartbi智分析插件安装避坑指南:从Excel插件安装到连接MySQL数据库的完整流程
  • 告别玄学预测:用Google TimesFM给你的业务数据(销售/流量/库存)做个靠谱的“体检报告”
  • 【Python MCP服务器开发终极模板】:2026年生产级架构、安全加固与AI运维集成全指南
  • Rockchip RK3588 DTS深度调优:从rockchip_suspend节点看低功耗场景配置实战
  • 程序员接单渠道有哪些?怎么选?不同平台的亲身体验分享
  • 大麦网抢票背后的技术攻防:从Charles抓包到协议逆向,聊聊自动化工具的安全与合规边界
  • tokio使用ws
  • 仿真建图实战:如何用Velodyne 16线和IMU数据提升Octomap八叉树地图质量?
  • 量子算法C++实现性能暴跌87%?揭秘Eigen3/Armadillo在QVM模拟中的6大内存陷阱及零拷贝优化方案
  • 有限元分析避坑指南:四边形等参元高斯积分计算中的5个常见错误