アプリケーションにフォーカスがない場合でも、押された3つのキーを取得するように低レベルのWindowsキーボードフックを設定しようとしています。これを行うために、私はSetWindowsHookExを次のように呼び出しています
// 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);
}
これは、.NET Framework 3.5を使用する32ビットおよび64ビットマシンで機能していましたが、.NET Framework 4.0にアップグレードした後、32ビットマシンでは機能しなくなりました。
4.0 Frameworkを使用して、32ビットマシンと64ビットマシンの両方でこれを機能させるために、これを解決する方法を知っている人はいますか?