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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д