如何在C#中使用RegisterHotKey()?

我正在尝试注册一个热键,我正在翻译这个 C ++代码,我写道:

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; } } } 

但它RegisterHotKey()永远返回false。 我不确定方法中传递的参数,IntPtr.Zero是等于null,而消息类是第二个参数所需的对象。 有人可以澄清吗? 任何帮助非常感谢!

这可能有所帮助:

控制台应用程序中的热键

基本上,您必须创建一个“隐藏”的表单才能使其工作