プロジェクトでGma.UserActivityMonitorライブラリを使用しようとしていますが、自分では解決できないエラーに直面しました。
ファイルには、次のコードでHookManager.Callbacks.cs
呼び出される静的メソッドがありEnsureSubscribedToGlobalMouseEvents
ます (多かれ少なかれ):
var asm = Assembly.GetExecutingAssembly().GetModules()[0];
var mar = Marshal.GetHINSTANCE(asm);
s_MouseHookHandle = SetWindowsHookEx(
WH_MOUSE_LL,
s_MouseDelegate,
mar,
0);
//If SetWindowsHookEx fails.
if (s_MouseHookHandle == 0)
{
//Returns the error code returned by the last unmanaged function called using platform invoke that has the DllImportAttribute.SetLastError flag set.
int errorCode = Marshal.GetLastWin32Error();
//do cleanup
//Initializes and throws a new instance of the Win32Exception class with the specified error.
throw new Win32Exception(errorCode);
}
はSetWindowsHookEx
常に戻り、上記のコードは message とreturn codeの呼び出しで0
例外をスローし続けます。Gma.UserActivityMonitor の元のプロジェクトで提供されているデモを正常に実行できますが、私のプロジェクトは少し複雑すぎてここで説明できないため、私のプロジェクトとの違いを詳しく説明することはできません。誰かが問題を盲目的に推測できることを願っています。The specified module could not be found
Marshal.GetLastWin32Error
126
ところで、プロジェクトのFAQでは、プロジェクトがデバッグされているときにのみチェックされると、他の人が私のものに近い問題を抱えている(SetWindowsHookEx
エラーを返す)と言われています。Enable Visual Studio hosting process
そのため、私のボックスのチェックを外しましたが、デバッグモードだけでなく、Windowsエクスプローラーでリリースファイルをダブルクリックしたときも同じ問題が発生します(Visual Studioは関係ありません)。
詳細については、デモ プロジェクト (正常に動作します) でasm
変数が指している点{Gma.UserActivityMonitor.dll}
と、例外がスローされた私のプロジェクトでも同じです!