简介

DllCall 一直是 AHK 中比较高级而又困难的功能。

高级在于, AHK 除了其自带的命令与函数外,其它几乎所有功能都需要靠调用系统 API 或三方 Dll 来实现,而 DllCall 则提供了调用系统 API 或三方 Dll 的能力。

困难在于,绝大部分人,很难看懂并搞清海量的参数类型。

所以,我写了这个工具,可以自动识别参数类型,并一键生成 DllCall 代码。

 

用法

非常简单,例如你想调用系统的 MessageBox 函数,只需打开 此函数的 MSDN 页面 ,将 Syntax 中的内容复制到工具中即可自动生成 AHK 代码。

 

原理与局限

工具会自动解析微软的函数定义,然后与257种已知常用类型进行匹配。

如果没有在常用类型中找到对应项,则会根据类型名、参数名等多种条件进行猜测。

但猜测并不能100%成功。这是因为,微软可能定义了数千种类型,将其一一囊括并与 AHK 类型对应是一件不太现实的事情。

好消息是,我手动测试了40+以上的函数,实际准确率至少在90%,也就是说,参数类型完全填对的占36+。

那几个错误的呢,其实也不算完全错误,只是其中部分参数类型工具实在猜不出来,被标记为了未知,需要人工确定而已。

 

下载与相关

 

更新日志

2022.04.18

  • 增强了识别能力
  • 优化了高分屏下的显示
  • 可以生成 Structor 用的类型列表文件

2022.03.31

  • 基于*靠左解析重构代码
  • 修复*靠右解析造成的错误
  • 增加类型到257种

2022.03.25

  • 增加类型到210种
  • 多行语法下进行缩进
  • 对可信度较低的猜测进行警告
  • 改进 Out + Str 类型变量的创建
  • 改进返回值类型的提取
  • 改进错误记录

 

相关推荐

  • Structor 这是一个可以计算并生成结构体的工具,本工具的界面就是抄的它。
  • Windows Data Types for AHK 这是一个可以查询一些类型信息的工具。我在本工具完成度90%左右时发现的它,所以类型分类我俩是各自独立完成的,因此也可以用这个工具的结果进行相互印证。

最后感谢 @Tebayaki 简单明了的解释清楚了某些类型的问题。

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。