Ich muss eine Anwendung schreiben, die Alt + Shift + S global abfängt.Wie werden globale Hotkeys in C# implementiert?
Was habe ich, das ich eine DLL erstellt, den globalen Haken setzt:
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
}
}
}
Dann habe ich ein Programm, das dieses DLL lädt und setzen Sie den Haken:
using Hotkeydll;
namespace IWFHotkeyStarter
{
class Program
{
static void Main(string[] args)
{
MyHotKey.setHooks();
}
}
}
Das Problem ist jetzt, dass Der Hotkey funktioniert nicht.
Es sieht so aus, als ob die DLL nicht dauerhaft in den Speicher geladen wird. Ich sehe, dass ich die DLL-Datei aus dem Dateisystem löschen kann.
Also bitte beraten, was ich falsch mache?
Sollte ich einen anderen Ansatz verwenden?
Vielen Dank.
Was macht Ihr PInvoke Code aussehen wie für 'SetWindowsHookEx' – SwDevMan81
Dies kann hilfreich sein http://www.codeproject.com/KB/cs/globalhook.aspx – fardjad