【发布时间】:2011-03-29 13:38:57
【问题描述】:
我正在尝试编写一个基本的后台键盘记录器...键盘扫描代码和状态通过 pinvoke 函数 ToAsciiEx 或 ToUnicodeEx 进行转换。这些函数有一个 KeyboardLayout 的参数。我有一个获取当前(活动窗口)键盘布局的功能(见下文)。但是这个函数总是返回 0。错误代码是 6 (ERROR_INVALID_HANDLE)。
有什么建议吗?
谢谢解答
static public IntPtr getActiveKeyBoardLayout()
{
int handle = 0;
handle = GetForegroundWindow();
IntPtr i = new IntPtr(handle);
HandleRef hr = new HandleRef(wrapper, i);
int pid;
GetWindowThreadProcessId(hr, out pid);
IntPtr layout = GetKeyboardLayout(pid);
int er = Marshal.GetLastWin32Error();
if (er > 0)
{
System.Console.Out.WriteLine("error " + er.ToString());
}
return layout;
}
【问题讨论】:
标签: c# pinvoke keyboard-events keyboard-layout keylogger