Habe mir Global Keyhook.cs heruntergeladen klappt für buchstaben ganz gut, allerdings sind die sonderzeichen nicht deutlich nachvollziehbar.
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region " Disable Special Keys"
[DllImport("user32.dll", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi)]
private static extern int SetWindowsHookEx(
int idHook,
LowLevelKeyboardProcDelegate lpfn,
int hMod,
int dwThreadId);
[DllImport("user32.dll")]
private static extern int UnhookWindowsHookEx(int hHook);
[DllImport("user32.dll", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi)]
private static extern int CallNextHookEx(
int hHook, int nCode,
int wParam, ref KBDLLHOOKSTRUCT lParam);
private delegate int LowLevelKeyboardProcDelegate(int nCode, int
wParam, ref KBDLLHOOKSTRUCT lParam);
const int WH_KEYBOARD_LL = 13;
private int intLLKey;
private struct KBDLLHOOKSTRUCT
{
public int vkCode;
int scanCode;
public int flags;
int time;
int dwExtraInfo;
}
private int LowLevelKeyboardProc(
int nCode, int wParam,
ref KBDLLHOOKSTRUCT lParam)
{
bool blnEat = false;
switch (wParam)
{
case 256: //WM_KEYDOWN = 0x0100
case 257: //WM_KEYUP = 0x0101
case 260: //WM_SYSKEYDOWN = 0x0104
case 261: //WM_SYSKEYUP = 0x0105
{
blnEat = false;
textBox1.Text = lParam.vkCode.ToString();
}
break;
}
if (blnEat)
return 1;
else return CallNextHookEx(0, nCode, wParam, ref lParam);
}
private void KeyboardHook(object sender, EventArgs e)
{
intLLKey =
SetWindowsHookEx(
WH_KEYBOARD_LL,
new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc),
System.Runtime.InteropServices.Marshal.GetHINSTANCE(
System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0);
}
private void ReleaseKeyboardHook()
{
intLLKey = UnhookWindowsHookEx(intLLKey);
}
#endregion
private void chk_DisableSpecialKeys_CheckedChanged(object sender, EventArgs e)
{
{
if (chk_DisableSpecialKeys.Checked)
KeyboardHook(this, e);
else
ReleaseKeyboardHook();
}
}
}
}