Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
0 / 0 / 1
Регистрация: 18.11.2015
Сообщений: 6
1
.NET 2.x

Как сделать глобальные горячие клавиши?

22.03.2012, 06:17. Показов 3187. Ответов 2
Метки нет (Все метки)

Как сделать глобальные горячие клавиши?

Пользуюсь вот таким кодом

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            MethodInvoker mi = new MethodInvoker(WaitKey);
            mi.BeginInvoke(null, null);
        }
 
        private void WaitKey()
        {
            while (this.IsHandleCreated)
            {
 
                short res1 = GetAsyncKeyState(VK_SHIFT);
                short res2 = GetAsyncKeyState(VK_Z);
                if (res1 != 0 && res2 != 0)
                    MessageBox.Show("Hello");
            }
        }
        
 
        public const int VK_SHIFT = 0x10;
        public const int VK_Z = 0x5A;
 
        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        internal static extern short GetAsyncKeyState(int vkey);
Но если
C#
1
MessageBox.Show("Hello");
Поменять на
C#
1
Form2 src = new Form2();
или на
C#
1
button1.Text = "10";
То выдаёт ошибку...Как её исправить?

Добавлено через 23 часа 45 минут
Блин, ну помогите плиз.Надо чтобы при нажатии shift+1 Выполнялось действие:
C#
1
2
            SendKeys.Send(textBox1.Text);
            SendKeys.Send("{ENTER}");
0
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2012, 06:17
Ответы с готовыми решениями:

Горячие клавиши
Мне нужен перехват событий с клавиатуры. Пожалуйста помогите. Взял исходник отсуда...

горячие клавиши
Нужен вызов справки. Т.е. нажимаем F1 вызывается справка

Горячие клавиши
Нужно сделать горячую клавишу. Я находил в инете примеры. Но мне надо немножко по другому. В тех...

Горячие клавиши в программе
Всем привет! Как добавить к кнопке в menustrip сочетание клавиш нажав которое произойдет активация?

2
Заблокирован
22.03.2012, 08:07 2
Цитата Сообщение от maslo2010 Посмотреть сообщение
о выдаёт ошибку...Как её исправить?
Что бы получить доступ к контролу из другого потока, необходимо использовать Invoke.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                short res1 = GetAsyncKeyState(VK_SHIFT);
                short res2 = GetAsyncKeyState(VK_Z);
                if (res1 != 0 && res2 != 0)
                {
                    button1.Invoke(new MethodInvoker(delegate()
                    {
 
                        button1.Text = "10";
 
 
                    }));                  
 
                }

Цитата Сообщение от maslo2010 Посмотреть сообщение
Блин, ну помогите плиз.Надо чтобы при нажатии shift+1 Выполнялось действие:
C#
1
2
 SendKeys.Send(textBox1.Text);
 SendKeys.Send("{ENTER}");
Насколько я понимаю эти методы посылают нажатия клавиш активному окну и для этого не нужен глобальный хук на горячие клавиши.
0
0 / 0 / 1
Регистрация: 18.11.2015
Сообщений: 6
22.03.2012, 12:30 3
Цитата Сообщение от Bren Посмотреть сообщение
Что бы получить доступ к контролу из другого потока, необходимо использовать Invoke.
Спасибо большое, теперь всё работает
Цитата Сообщение от Bren Посмотреть сообщение
Насколько я понимаю эти методы посылают нажатия клавиш активному окну и для этого не нужен глобальный хук на горячие клавиши.
Я делаю что-то типо спамера для игры который при нажатии горячей клавиши будет посылать сообщение в чат(в игре не предусмотрели сделать такое)...

Теперь он почемуто посылает несколько сотен
C#
1
2
            SendKeys.Send(textBox1.Text);
            SendKeys.Send("{ENTER}");
Проверял на блокноте(akelpad)...

Добавлено через 3 часа 17 минут
Сделал с помощью таймера...Спасибо тебе Bren.Кнопочки спасибо жаль нету у меня(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2012, 12:30

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Горячие клавиши в консольном приложении
Использую следующие классы HotKeyManager: public static class HotKeyManager { public...

Горячие клавиши чудят, а кнопки работают
Есть код. private void button4_Click(object sender, EventArgs e) { PLAY();...

Горячие клавиши для своей программы
Нужна помощь, есть форма , на ней 2 кнопки. Нужны обычные хоткеи этих двух клавиш, ибо программа...

Горячие клавиши работающие вне программы
Здравствуйте. Есть ли вариант как-то сделать горячие клавиши, чтобы они срабатывали, когда в фокусе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.