J'ai besoin d'écrire une application qui intercepte globalement Alt + Maj + S.Comment implémenter Global Hotkeys en C#?
Ce que je fait est que je créé une DLL qui fixe les crochets mondiaux:
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
}
}
}
Ensuite, je créé un programme qui charge cette DLL et mettre le crochet:
using Hotkeydll;
namespace IWFHotkeyStarter
{
class Program
{
static void Main(string[] args)
{
MyHotKey.setHooks();
}
}
}
Maintenant, le problème est que la touche de raccourci ne fonctionne pas.
Il semble que la DLL ne soit pas chargée en permanence dans la mémoire. Je vois que je peux supprimer le fichier dll du système de fichiers.
Alors s'il vous plaît aviser ce que je fais mal?
Dois-je utiliser une approche différente?
Merci.
Qu'est-ce que votre look de code PInvoke comme pour 'SetWindowsHookEx' – SwDevMan81
Cela pourrait être utile http://www.codeproject.com/KB/cs/globalhook.aspx – fardjad