Hy Ignacio,
thx for your help, i find something on internet:
private delegate int LowLevelKeyboardProcDelegate(int nCode, int
wParam, ref KBDLLHOOKSTRUCT lParam);
[ DllImport( "user32.dll", EntryPoint="SetWindowsHookExA",
CharSet=CharSet.Ansi )]
private static extern int SetWindowsHookEx(int idHook ,
LowLevelKeyboardProcDelegate lpfn, int hMod , int dwThreadId);
[ DllImport( "user32.dll", EntryPoint="UnHookWindowsHookEx",
CharSet=CharSet.Ansi )]
private static extern int UnHookWindowsEx(int hHook);
[ DllImport( "user32.dll", EntryPoint="CallNextHookEx",
CharSet=CharSet.Ansi )]
private static extern int CallNextHookEx(int hHook,int nCode, int
wParam, ref KBDLLHOOKSTRUCT lParam);
const int WH_KEYBOARD_LL = 13;
public struct KBDLLHOOKSTRUCT
{
public int vkCode;
int scanCode;
public int flags;
int time;
int dwExtraInfo;
}
private int intLLKey;
private KBDLLHOOKSTRUCT lParam;
private int LowLevelKeyboardProc(int nCode,int wParam,ref
KBDLLHOOKSTRUCT lParam)
{
bool blnEat = false;
switch (wParam)
{
case 256:
case 257:
case 260:
case 261:
//Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key
if(((lParam.vkCode == 9) && (lParam.flags == 32)) ||
((lParam.vkCode == 27) && (lParam.flags == 32)) || ((lParam.vkCode ==
27) && (lParam.flags == 0)) || ((lParam.vkCode == 91) && (lParam.flags
== 1)) || ((lParam.vkCode == 92) && (lParam.flags == 1)) || ((true) &&
(lParam.flags == 32)))
{
blnEat = true;
}
break;
}
if (blnEat)
return 1;
else return CallNextHookEx(0, nCode, wParam, ref lParam);
}
public void KeyboardHook(object sender, EventArgs e)
{
intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, new
LowLevelKeyboardProcDelegate(LowLevelKeyboardProc) ,
System.Runtime.InteropServices.Marshal.GetHINSTANC E(System.Reflection.As
sembly.GetExecutingAssembly().GetModules()[0]).ToInt32(),0);
}
Stefan
*** Sent via Developersdex
http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!