我需要編寫一個全局截取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