Tôi đang cố gắng đặt móc khóa cửa sổ ở mức thấp để lấy ba phím được nhấn ngay cả khi ứng dụng không được lấy nét. Để thực hiện điều này, tôi gọi SetWindowsHookEx nhưSetWindowsHookEx trả về 0 khi biên dịch khuôn khổ .NET 4.0 trong các máy 32bit
// 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);
}
này được sử dụng để làm việc trên 32bit và 64bit máy bằng cách sử dụng .NET Framework 3.5 nhưng sau khi nâng cấp lên .NET Framework 4.0 ngừng làm việc trên máy 32bit.
Có ai biết cách giải quyết vấn đề này để tôi có thể sử dụng Khung 4.0 và thực hiện công việc này trên cả máy 32bit và 64bit không?
Trong .NET 4.0, SetWindowsHookEx trả về 0 cho tôi với một lỗi Hook Thủ tục không hợp lệ. – tofutim