J'essaie de définir un crochet de clavier Windows de bas niveau pour saisir trois touches enfoncées même si l'application n'est pas mise au point. Pour ce faire, je vous appelle SetWindowsHookEx commeSetWindowsHookEx renvoie 0 lors de la compilation pour l'infrastructure .NET 4.0 dans les machines 32 bits
// Create an instance of HookProc.
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
//install hook
hKeyboardHook = SetWindowsHookEx(
WH_KEYBOARD_LL,
KeyboardHookProcedure,
Marshal.GetHINSTANCE(
Assembly.GetExecutingAssembly().GetModules()[0]),
0);
//If SetWindowsHookEx fails.
if (hKeyboardHook == 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
Stop(false, true, false);
//Initializes and throws a new instance of the Win32Exception class with the specified error.
throw new Win32Exception(errorCode);
}
Cela permet de travailler sur des machines 32bits et 64bits en utilisant le .NET Framework 3.5, mais après mise à niveau vers le .NET Framework 4.0 ne fonctionne plus sur les machines 32bits.
Est-ce que quelqu'un sait comment résoudre ceci afin que je puisse utiliser le Framework 4.0 et le faire fonctionner sur les machines 32 bits et 64 bits?
Dans .NET 4.0, SetWindowsHookEx retourne 0 pour moi avec une erreur de procédure Hook non valide. – tofutim