You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AHK V1调用DllCall出现ErrorLevel '-4'问题求助

解决AHK V1调用MonitorFromWindow时ErrorLevel=-4的问题

核心问题出在函数名的大小写错误,Windows API的DLL导出函数名称是区分大小写的:

  • 你代码中使用的全小写monitorfromwindow并非user32.dll中实际导出的函数名,正确的函数名是驼峰命名的MonitorFromWindow。

同时建议优化参数类型以适配64位系统:窗口句柄在64位环境下是64位值,原代码中的uint(32位无符号整数)可能导致句柄截断,应改用ptr类型自动适配32/64位系统。

修正后的代码:

windowHandle := WinExist("ahk_exe firefox.exe")
monitorHandle := DllCall("user32.dll\MonitorFromWindow", "ptr", windowHandle, "uint", 0x2)

补充说明:

  • 你用DLL导出查看工具验证时,应该能看到user32.dll中实际导出的函数是MonitorFromWindow(首字母及中间单词首字母大写),而非全小写形式。
  • 参数0x2对应MONITOR_DEFAULTTONEAREST常量,逻辑是如果窗口不在任何显示器上,返回最近的显示器句柄,这个参数是正确的。

内容的提问来源于stack exchange,提问作者Ralf_Reddings

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:22:39