SetWindowsHookEx schlägt mit Fehler 126 fehl

Ich versuche das zu benutzenGma.UserActivityMonitor Bibliothek in einem Projekt und ich habe einen Fehler konfrontiert, den ich nicht alleine überwinden kann.

In demHookManager.Callbacks.cs Datei gibt es eine statische Methode namensEnsureSubscribedToGlobalMouseEvents mit folgendem Code (mehr oder weniger):

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);
}

DasSetWindowsHookEx kehrt immer zurück0 und der obige Code löst immer wieder eine Ausnahme mit message ausThe specified module could not be found und der Aufruf anMarshal.GetLastWin32Error Gibt Code zurück126. Ich kann die mit Gma.UserActivityMonitor gelieferte Demo erfolgreich ausführen, aber da mein Projekt ein wenig zu kompliziert ist, um es hier zu erklären, kann ich nicht ins Detail gehen und den Unterschied zu meinem erklären. Ich hoffe nur, dass jemand das Problem blind erraten kann.

Übrigens, in den FAQ des Projekts heißt es, dass andere ein Problem in meiner Nähe haben (mitSetWindowsHookEx Rückgabefehler), wenn derEnable Visual Studio hosting process wird nur beim Debuggen des Projekts aktiviert. Also habe ich dieses Kontrollkästchen in meinem deaktiviert und habe immer noch das gleiche Problem, und zwar nicht nur im Debugging-Modus, sondern auch, wenn ich im Windows-Explorer auf die Release-Datei doppelklicke (kein Visual Studio beteiligt).

Um mehr Informationen zu geben, im Demo-Projekt (was gut funktioniert) dieasm variable Punkte bis{Gma.UserActivityMonitor.dll} und das selbe in meinem projekt das die ausnahme geworfen wird!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage