como usar RegisterHotKey () em c #?

Estou tentando registrar uma tecla de atalho, estou traduzindo esse código C ++, escrevi:

using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace ConsoleApplication1 { class Program { [DllImport("user32.dll")] public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, int vk); [DllImport("user32")] public static extern bool GetMessage(ref Message lpMsg, IntPtr handle, uint mMsgFilterInMain, uint mMsgFilterMax); public const int MOD_ALT = 0x0001; public const int MOD_CONTROL = 0x0002; public const int MOD_SHIFT = 0x004; public const int MOD_NOREPEAT = 0x400; public const int WM_HOTKEY = 0x312; public const int DSIX = 0x36; static void Main(string[] args) { if (!RegisterHotKey(IntPtr.Zero, 1, MOD_ALT | MOD_NOREPEAT, DSIX)) { Console.WriteLine("failed key register!"); } Message msg = new Message(); while (!GetMessage(ref msg, IntPtr.Zero, 0, 0)) { if (msg.message == WM_HOTKEY) { Console.WriteLine("do work.."); } } Console.ReadLine(); } } public class Message { public int message { get; set; } } } 

mas RegisterHotKey() sempre retorna false. Eu não tenho certeza sobre os argumentos passados ​​no método, IntPtr.Zero é para ser equivalente a nulo e class de mensagem para ser object exigido no segundo argumento. alguém pode esclarecer por favor? Qualquer ajuda é muito apreciada!

Isso pode ajudar:

Hotkey no aplicativo do console

Basicamente, você tem que criar um formulário “oculto” para fazê-lo funcionar