我需要编写一个全局截取Alt + Shift + S的应用程序。如何在C#中实现全局热键?
我做什么是我创建了设置全局钩子DLL:
namespace Hotkeydll
{
public class MyHotKey
{
public static void setHooks()
{
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
}
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
//write something into file
}
}
}
然后我创建了加载这个DLL,并设置钩子程序:
using Hotkeydll;
namespace IWFHotkeyStarter
{
class Program
{
static void Main(string[] args)
{
MyHotKey.setHooks();
}
}
}
现在的问题是,热键不起作用。
它看起来像DLL没有永久加载到内存中。我看到我可以从文件系统中删除该dll文件。
那么请告诉我我做错了什么?
我应该用不同的方法吗?
谢谢。
什么是您的PInvoke的代码看起来像'SetWindowsHookEx' – SwDevMan81 2010-12-10 16:37:28
这可能是有益的http://www.codeproject.com/KB/cs/globalhook.aspx – fardjad 2010-12-10 17:53:12