为什么我在 AutoHotKey DllCall 中得到 -3?

为什么我在 AutoHotKey DllCall 中得到 -3?

我正在尝试使用 IBM 的 EHLLAPI 与其 Personal Communicator 终端仿真器进行交互。我将其指向 API 的位置,并指定 api 名称,如下所示:

hllapi(ByRef functionCode, ByRef data, ByRef length, ByRef returnCode)
{
  dllfunction := "C:\EHLAPI32.dll\HLLAPI"
  datatype := "Int *"
  rvalue := DllCall(dllfunction
                  , datatype, functionCode
                  , "Str"   , data
                  , datatype, length
                  , datatype, returnCode)
  If ErrorLevel
    MsgBox hllapi() returned %ErrorLevel%
  Return rvalue
}

然而,它只是返回 -3,表示:

-3:无法访问指定的 DllFile。如果没有为 DllFile 指定显式路径,则该文件必须存在于系统的 PATH 或 A_WorkingDir 中。如果用户缺乏访问该文件的权限,也可能会发生此错误。

我检查了权限,应该没有任何问题。我还尝试将 dll 复制到我的 C:/ 驱动器的根目录以避免任何访问问题,但这也没有解决问题。为什么找不到文件?

答案1

我终于发现了问题所在。我使用的是 64 位 AutoHotkey,而我尝试使用的 dll 是 32 位的。一旦我切换到 32 位 AutoHotkey,它就能毫无问题地找到 dll。

相关内容