DLL с горячими клавишами - C#

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

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

Привет всем. У меня есть программа, которая напоминает о событиях. При нажатие на некоторые клавиши, она открывает окно и просит заполнить форму. Сначала клавиши были в исполняемом файле .exe и всё нормально работало. Теперь решил их перенести в файл dll, чтобы можно было обновлять программу автоматически. Но вот проблема: при копировании того когда в dll возникает куча ошибок, даже не знаю как и исправить. В основном связанных с пространством имён Windows.Form;

Решение задачи: «DLL с горячими клавишами»

textual
Листинг программы
#region Declarations
 
        [DllImport("USER32.DLL", SetLastError = true)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
        [DllImport("User32", SetLastError = true)]
        private static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
 
        const int SW_SHOW = 5;
        const int SW_HIDE = 0;
 
        UserActivityHook actHook;
 
        #endregion
void MainFormLoad(object sender, System.EventArgs e)
        {
            actHook = new UserActivityHook(); // crate an instance with global hooks
 
            // hang on events
            actHook.KeyDown += new KeyEventHandler(Hook_KeyDown);
            actHook.KeyUp += new KeyEventHandler(Hook_KeyUp);
 
            actHook.Start();
        }
#region Нажатие и отпускание клавиш
        bool LControlKey;
        bool LMenu;
        #region Hook_KeyDown
 
        /// <summary>
        /// KeyDown Hook Handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
 
        public void Hook_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData.ToString() == "LControlKey")
            {
                LControlKey = true;
                return;
            }
            if (e.KeyData.ToString() == "LMenu")
            {
                LMenu= true;
                return;
            }
        }
 
        #endregion
 
        #region Hook_KeyUp
 
        /// <summary>
        /// KeyUp Hook Handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// 
 
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        private static extern short GetKeyState(int vKey);
        private const byte VK_SHIFT = 0x10;
        private const byte VK_CAPITAL = 0x14;
 
        public void Hook_KeyUp(object sender, KeyEventArgs e)
        {
             if (LMenu && LControlKey && e.KeyCode.ToString() == "F")
                 MyMethod();
             else
                 LMenu = false;
                 LControlKey = false;
        }
        #endregion

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


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

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

13   голосов , оценка 4 из 5