AutoHotkey.dll:“新的CoCOMServer()”导致异常

时间:2013-08-29 15:36:48

标签: c# dll autohotkey stack-overflow

我从

成功下载了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位。使用SAME设置在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");

这个 DOES 在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行代码?使用Interop做点什么?我不知道。

2 个答案:

答案 0 :(得分: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()当然是关键

答案 1 :(得分:0)

要修复错误,您需要注册正确的dll,它位于 多线程Dll MD文件夹,一旦执行此操作,可视基本代码将起作用 我遇到了同样的问题,并为解决问题而松了一口气,所以我很高兴 帮助你