how to use RegisterHotKey() in C#?
本问题已经有最佳答案,请猛点这里访问。
我正在尝试注册热键,正在翻译此C代码,我写了它:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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; } } } |
但它
我不确定在方法中传递的参数,IntPtr.Zero是否等效于null,而消息类是否是第二个参数所需的对象。有人可以澄清一下吗?任何帮助都非常感谢!
这可能会有所帮助:
控制台应用程序中的热键
基本上,您必须创建一个"隐藏"表单才能使其工作