hola,
necesito recoger los eventos de tecla en mi aplicación, aunque esta no esté
activa, he tratado de pasar un ejemplo de system windows hooks que vi en vb
.net a c# , pero no me responde igual, no sé qué es lo que estoy haciendo
mal, os agradeceria me dierais una solución ;)
<codigo>
using System;
using System.Runtime.InteropServices;
namespace IOHTV
{
[ StructLayout( LayoutKind.Sequential)]
public struct KBDLLHOOKSTRUCT
{
int vkCode;
int scanCode;
int flags;
int time;
int dwExtraInfo;
}
public class KeyBoardHooksManager
{
public delegate int LowLevelKeyBoardProcDelegate(int nCode, int wParam, ref
KBDLLHOOKSTRUCT lParam);
[DllImport("user32.dll")]
public static extern int SetWindowsHookExA(int idHook,
LowLevelKeyBoardProcDelegate lpfn, int hMod, int dwThreadId);
[DllImport("user32.dll")]
public static extern int UnhookWindowsHookEx(int hHook);
[DllImport("user32.dll")]
public static extern int CallNextHookEx(int hHook, int nCode, int wParam,
ref KBDLLHOOKSTRUCT lParam);
public static int LowLevelKeyBoardProc(int nCode, int wParam, ref
KBDLLHOOKSTRUCT lParam)
{
Console.WriteLine("Key event");
return 1;
}
public const int WH_KEYBOARD_LL = 13;
public void Test()
{
KeyBoardHooksManager.SetWindowsHookExA(WH_KEYBOARD_LL, new
LowLevelKeyBoardProcDelegate(LowLevelKeyBoardProc) ,
Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetMo
dules()[0]).ToInt32(), 0);
}
}
class Class1
{
[STAThread]
static void Main(string[] args)
{
KeyBoardHooksManager a = new KeyBoardHooksManager();
a.Test();
Console.Read();
}
}
}
</codigo>
Leer las respuestas