0

から Autohotkey_H 1.1 パッケージを正常にダウンロードしました

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

次に、AutoHotkey.dll の Win32w バージョン (「Win32w」フォルダー内) を regsvr32 に正常に登録しました。

次に、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)

Windows7 64ビットを使用しています。エラーは、同じセットアップの 2 つの異なるマシンで発生します。

Visual Studio で DLL をうまく使った人はいますか?

編集:

また、これは 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");

そして、これはオートホットキー自体で機能します:

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 で何かしますか?私は見当もつかない。

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 に答える