0

我成功下载了 Autohotkey_H 1.1 包

http://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html

然后,我成功地使用 regsvr32 注册了 AutoHotkey.dll 的 Win32w 版本(在“Win32w”文件夹中)。

然后我启动了Visual Studio 2012,启动了一个新项目并成功引用了项目中的DLL。

该项目只有以下代码:

class Program {
    static void Main(string[] args) {
      CoCOMServer ahkThread = new CoCOMServer();
    }
  }

运行代码时,出现以下错误:

http://imageshack.us/f/822/pn3y.png(mscorlib.dll 中的 StackOverflowException)

我正在使用 Windows 7 64 位。该错误发生在具有相同设置的 2 台不同机器上。

有没有人成功地将 DLL 与 Visual Studio 一起使用,并给我一些提示,告诉我你做了什么不同的事情?

编辑:

此外,这在 VB 中不起作用:

Sub atest()
Dim AhkCom As Object
Set AhkCom = CreateObject("AutoHotkey.Script")
AhkCom.ahktextdll("MsgBox Hello World!" & Chr(13) & "ExitApp")
End Sub

并且neiter这样做:

dynamic ahk = Activator.CreateInstance(Type.GetTypeFromProgID("AutoHotkey.Script.UNICODE"));
ahk.ahktextdll("msgbox hello world");

确实适用于 Autohotkey 本身:

AhkCom := ComObjCreate("AutoHotkey.Script")
AhkCom.ahktextdll("MsgBox Hello World!`nExitApp")
While AhkCom.ahkReady()
  Sleep, 100
MsgBox Exiting now

最后一个证明 DLL 实际上是可以工作的。

事实上,它非常清楚地表明问题是特定于 Visual Studio 的。现在也尝试了2010年。

如果有人能告诉我我做错了什么,我将永远感激不尽。我是否需要指定超过 2-4 行代码?用互操作做点什么?我没有任何线索。

4

2 回答 2

0

如果您查看他们网站上的示例(在 VB 中)

Sub atest()
Dim AhkCom As Object
Set AhkCom = CreateObject("AutoHotkey.Script")
AhkCom.ahktextdll("MsgBox Hello World!" & Chr(13) & "ExitApp")
End Sub

这说明了如何连接到 COM 服务器。CreateObject() 当然是关键

于 2013-08-29T15:58:00.897 回答
0

要修复您的错误,您需要注册正确的 dll,它位于 Multi-threaded Dll MD 文件夹中,一旦您这样做了,Visual Basic 代码就可以工作了很乐意帮助你

于 2013-08-31T23:33:51.420 回答