基本的なバックグラウンド キーロガーを作成しようとしています... キーボードの scanCode と状態は、pinvoke 関数の ToAsciiEx または ToUnicodeEx を介して変換されます。これらの関数には、KeyboardLayout の引数があります。現在の (アクティブなウィンドウの) キーボード レイアウトを取得するための関数 (以下を参照) があります。ただし、この関数は常に 0 を返します。エラー コードは 6 (ERROR_INVALID_HANDLE) です。
何か提案はありますか?
答えのためのthx
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;
}