Горячие клавиши (Ошибка при создании дескриптора окна) - C#

Узнай цену своей работы

Формулировка задачи:

    public partial class ShotForm : Form
    {
        [DllImport("user32")]
        public static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);
        [DllImport("user32.dll")]
        static extern bool UnregisterHotKey(IntPtr hWnd, int id);
        private const int MOD_ALT = 0x1;
        private const int MOD_CONTROL = 0x2;
        private const int MOD_SHIFT = 0x4;
        private const int MOD_WIN = 0x8;
        private const int WM_HOTKEY = 0x312;
 
        public ShotForm()
        {
            InitializeComponent();
            RegisterHotKey(this.Handle, 42, MOD_WIN, (int)Keys.A);
        }
 
        private new void Close()
        {
            UnregisterHotKey(this.Handle, 42);
        }
 
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_HOTKEY)
            {
                switch (m.WParam.ToInt32())
                {
                    case 42:
                        Show();
                        break;
 
                    case 43:
 
                        break;
                }
            }
        }
Пытаюсь сделать хоткеи. На строчке
RegisterHotKey(this.Handle, 42, MOD_WIN, (int)Keys.A);
В конструкторе вылетает
Необработанное исключение типа "System.ComponentModel.Win32Exception" произошло в System.Windows.Forms.dll Дополнительные сведения: Ошибка при создании дескриптора окна.
Если убрать метод

WndProc

, то ошибка не возникает, но она же нужна Что я нахимичил не так?

Решение задачи: «Горячие клавиши (Ошибка при создании дескриптора окна)»

textual
Листинг программы
base.WndProc(ref m);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.333 из 5
Похожие ответы