как использовать RegisterHotKey () в C #? [дубликат]

На этот вопрос уже есть ответ:

Я пытаюсь зарегистрировать горячую клавишу, я перевожу это Код 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 должен быть эквивалентен нулю, а класс сообщения должен быть объектом, требуемым во втором аргументе. может кто-нибудь уточнить пожалуйста? любая помощь очень ценится!

9
задан The Mask 18 January 2012 в 03:37
поделиться