我需要编写一个全局拦截 Alt+Shift+S 的应用程序。
我所做的是创建了一个设置全局挂钩的 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 文件。
所以请告诉我我做错了什么?
我应该使用不同的方法吗?
谢谢你。