|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.05.2015, 16:58 | #1 |
Пользователь
Регистрация: 09.05.2015
Сообщений: 70
|
Развернуть форму по горячим клавишам!
Имеется форма в трее, как можно по нажатию клавиш снова её развернуть ?
|
26.05.2015, 17:24 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Зарегистрировать горячую клавишу.
Дедовский метод: Функция RegisterHotKey. Хотя может в Шарпее есть для этого компонент или класс специальный.
I'm learning to live...
|
26.05.2015, 22:52 | #3 | |
Пользователь
Регистрация: 09.05.2015
Сообщений: 70
|
Цитата:
Импортировал длл [DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hwnd, int id, uint fsModifiers, uint keyCode); в InitializeComponent(); поставил: this.KeyPreview = true; private void button12_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F1 && e.Alt) { this.Visible = false; /* скроем форму */ notifyIcon1.Visible = true; /* покажем икону в трее */ } } такой код скрывает форму по нажатию клавиш F1 + Alt! а как развернуть мне её? у меня не получается! |
|
26.05.2015, 23:16 | #4 |
Пользователь
Регистрация: 09.05.2015
Сообщений: 70
|
Вообщем понял как реализовать и получилось: поделюсь!
Добавил класс hook.cs подключил его добавил код: private Hook _hook; [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); public Form1() { TopMost = true; InitializeComponent(); this.KeyPreview = true; keybd_event(0x71, 0x45, 0x1, (UIntPtr)0); _hook = new Hook(0x71); //Передаем код клавиши на которую ставим хук _hook.KeyPressed += new KeyPressEventHandler(_hook_KeyPress ed); _hook.SetHook(); } P.s где (0x71) это код клавиши вот сайт по ним:http://www.arininav.ru/js/keycodes.htm Вот сам класс: // Копируем вставляем в тестовый документ сохраняем под названием Hook.cs, перетаскиваем в проект! public class Hook : IDisposable { #region Declare WinAPI functions [DllImport("kernel32.dll")] private static extern IntPtr LoadLibrary(string lpFileName); [DllImport("user32.dll")] private static extern IntPtr SetWindowsHookEx(int idHook, KeyboardHookProc callback, IntPtr hInstance, uint threadId); [DllImport("user32.dll")] private static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, int wParam, IntPtr lParam); [DllImport("user32.dll")] private static extern bool UnhookWindowsHookEx(IntPtr hInstance); #endregion #region Constants private const int WH_KEYBOARD_LL = 13; private const int WH_KEYDOWN = 0x0100; #endregion // код клавиши на которую ставим хук private int _key; public event KeyPressEventHandler KeyPressed; private delegate IntPtr KeyboardHookProc(int code, IntPtr wParam, IntPtr lParam); private KeyboardHookProc _proc; private IntPtr _hHook = IntPtr.Zero; public Hook(int keyCode) { _key = keyCode; _proc = HookProc; } public void SetHook() { var hInstance = LoadLibrary("User32"); _hHook = SetWindowsHookEx(WH_KEYBOARD_LL, _proc, hInstance, 0); } public void Dispose() { UnHook(); } public void UnHook() { UnhookWindowsHookEx(_hHook); } private IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam) { if ((code >= 0 && wParam == (IntPtr)WH_KEYDOWN) && Marshal.ReadInt32(lParam) == _key) { // бросаем событие if (KeyPressed != null) { KeyPressed(this, new KeyPressEventArgs(Convert.ToChar(co de))); } } // пробрасываем хук дальше return CallNextHookEx(_hHook, code, (int)wParam, lParam); } } Последний раз редактировалось ZiDoxFix; 26.05.2015 в 23:19. Причина: Добавил класс |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как развернуть форму? | Janger | Общие вопросы Delphi | 3 | 01.10.2013 07:21 |
Исчез доступ к горячим клавишам | Andrey85 | Общие вопросы Delphi | 5 | 03.12.2010 13:59 |
как свернуть и развернуть форму? | blackstersl | Общие вопросы Delphi | 7 | 25.06.2009 09:20 |
Как развернуть свернутую форму? | XPAiN | Общие вопросы Delphi | 2 | 14.02.2008 15:51 |
Развернуть форму | Veiron | Общие вопросы Delphi | 4 | 24.01.2008 11:08 |