Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281

Горячая клавиша на таймер

14.02.2014, 18:02. Показов 2714. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Нужно сделать, чтоб при нажатии клавиши F3, таймер запускался, при повторном нажатии на F3 останавливался. Как это реализовать?(Если не сложно, можно код целиком)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.02.2014, 18:02
Ответы с готовыми решениями:

горячая клавиша
возможно ли программно написать такое: при помощи горячей клавиши выполнять событие...ну например на форме 2 текстбокса и при помощи...

Горячая клавиша F2 вне фокуса окна
Добрый день. Написал программу на C# WinForms, сделал горячую клавишу F2, т.е. при нажатии будет выполняться функция и результат будет...

Горячая клавиша
Пытаюсь сделать анти афк на VBS, чтобы персонаж прыгал на месте. Прыгать та прыгает, вот только не понимаю как сделать чтобы скрипт...

22
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2014, 18:31
Можно вот так.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace Trances
{
    public partial class Form1 : Form
    {
        System.Timers.Timer mytimer;
        bool mytimerState;
        public Form1()
        {            
            InitializeComponent();
            this.Load+=new EventHandler(Form1_Load);          
        }
        void Form1_Load(object sender, EventArgs e)
        {
            mytimer = new System.Timers.Timer();
            mytimerState = true;
            this.KeyDown+=new KeyEventHandler(Form1_KeyDown);
            mytimer.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_Elapsed);
        }
        void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            mytimer.Interval = 3000;
 
            if (e.KeyCode == Keys.F3)
                if (mytimerState)
                {
                    mytimer.Start();
                    mytimerState = !mytimerState;
                }
                else
                {
                    mytimerState = !mytimerState;
                    mytimer.Stop();
                }               
        }
        void mytimer_Elapsed(object sender, EventArgs e)
        {
            MessageBox.Show("Timer");
        }
    }
}
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
14.02.2014, 19:29  [ТС]
Нет, к сожалению, этот код мне не подходит, существует ли другой и более покороче?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
14.02.2014, 19:44
А в чем проблема? Может он только кажется длинным, поскольку все в одном окне кода прописано...
Так или иначе, надо обрабатывать событие KeyDown, без этого никак...
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
15.02.2014, 02:21
Trances, Зачем Вы создали одну и ту же тему аж в трех разных разделах (VB6, VB .NET и C#)?
Тут Сделать горячую клавишу на таймер объединены 2 темы, решение дано, Вы сказали "Все работает".
Зачем Вы третью создали в шарпе?
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
15.02.2014, 18:46  [ТС]
Понимаете, я писал сначала на Visual Basic .NET, потом нужда была начать писать на C#. Вот такая вот беда
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
15.02.2014, 19:10
Цитата Сообщение от Trances Посмотреть сообщение
Понимаете, я писал сначала на Visual Basic .NET, потом нужда была начать писать на C#. Вот такая вот беда
так давай сюда код на VB, умельцы переведут)
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
18.02.2014, 07:17  [ТС]
Цитата Сообщение от -HPR- Посмотреть сообщение
так давай сюда код на VB, умельцы переведут)
Вот:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Const WM_HOTKEY As Integer = &H312
    Public Declare Auto Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
    Public Declare Auto Function UnregisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer) As Boolean
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RegisterHotKey(Me.Handle, 1, Nothing, 114)
    End Sub
 
    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        MyBase.WndProc(m)
        If (m.Msg = WM_HOTKEY) Then
            Dim hotKeyId As Integer = m.WParam.ToInt32()
            If hotKeyId = 1 Then
                Timer1.Enabled = Not Timer1.Enabled
            End If
        End If
    End Sub
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
18.02.2014, 10:48
Переводил "на колене" а потому за правильность не ручаюсь)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    private const int WM_HOTKEY = 0x312;
 
   [DllImport("user32.dll")]
    public static extern bool RegisterHotKey (IntPtr hWnd , int id , int fsModifiers,int vk);
   [DllImport("user32.dll")]
    public static extern bool UnregisterHotKey (IntPtr hWnd , int id );
private void Form1_Load(System.Object sender, System.EventArgs e)
{
    RegisterHotKey(this.Handle, 1, null, 114);
}
 
protected override void WndProc(ref System.Windows.Forms.Message m)
{
    base.WndProc(m);
    if ((m.Msg == WM_HOTKEY)) 
{
        int hotKeyId = m.WParam.ToInt32();
        if (hotKeyId == 1) 
      {
            Timer1.Enabled = false;
        }
    }
}
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
18.02.2014, 11:26
самый простой вариант:
1) Сделать в программе меню. (если его ещё нет)
2) На пункт меню повесить метод запуска/остановки таймера.
3) В качестве горячей клавиши пункту меню поставить F3
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
19.02.2014, 07:35  [ТС]
Цитата Сообщение от -HPR- Посмотреть сообщение
Переводил "на колене" а потому за правильность не ручаюсь)
Ошибки((((
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
19.02.2014, 16:06
в какой строке?
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
19.02.2014, 16:58  [ТС]
Цитата Сообщение от -HPR- Посмотреть сообщение
в какой строке?
В девятой и четырнадцатой
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
19.02.2014, 17:17
Цитата Сообщение от Trances Посмотреть сообщение
В девятой и четырнадцатой
а можно текст ошибки посмотреть?
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
22.02.2014, 14:42  [ТС]
1>C:\Users\Игорь\Desktop\1\Form1.cs(23,1 3,23,54): error CS1502: Наиболее подходящий перегруженный метод для "_by_KING_530.Form4.RegisterHotKey(Syste m.IntPtr, int, int, int)" имеет несколько недопустимых аргументов
1>C:\Users\Игорь\Desktop\1\Form1.cs(23,4 4,23,48): error CS1503: Аргумент "3": преобразование типа из "<null>" в "int" невозможно
1>C:\Users\Игорь\Desktop\1\Form1.cs(28,1 3,28,28): error CS1502: Наиболее подходящий перегруженный метод для "System.Windows.Forms.Control.WndProc(re f System.Windows.Forms.Message)" имеет несколько недопустимых аргументов
1>C:\Users\Игорь\Desktop\1\Form1.cs(28,2 6,28,27): error CS1620: Аргумент "1" должен передаваться с ключевым словом "ref"
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
22.02.2014, 15:48
Исправил, у меня всё работает=) пользуйтесь)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        private const int WM_HOTKEY = 0x312;
        [DllImport("user32.dll")]
        public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
        [DllImport("user32.dll")]
        public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
 
 
        private void Form1_Load(object sender, EventArgs e)
        {
            RegisterHotKey(this.Handle, 1, 0, 114);
        }
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if ((m.Msg == WM_HOTKEY))
            {
                int hotKeyId = m.WParam.ToInt32();
                if (hotKeyId == 1)
                {
                    timer1.Enabled = false;
                }
            }
        }
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
23.02.2014, 19:12  [ТС]
(Не по теме)-HPR-, не могли бы вы еще сообщить, как сделать, чтоб форма была перемещаемой если стиль окна None?
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
23.02.2014, 19:21
Мог бы) В событии формы MouseDown напишите следующий код
C#
1
2
3
this.Capture = false;
Message n = Message.Create(this.Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
this.WndProc(ref n);
0
1 / 1 / 1
Регистрация: 03.02.2014
Сообщений: 281
23.02.2014, 19:24  [ТС]
Код с таймером что-то не работает
0
 Аватар для pokerface
209 / 174 / 48
Регистрация: 20.09.2012
Сообщений: 481
23.02.2014, 19:43
Цитата Сообщение от Trances Посмотреть сообщение
Код с таймером что-то не работает
ну я же не Ванга) что именно не работает? где ошибки итд..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2014, 19:43
Помогаю со студенческими работами здесь

Горячая клавиша
Здравствуйте! Как-то раньше на vs c# создавал копию строки (в зависимости от нахождения курсора). Если не ошибаюсь, то это был Ctrl + D.....

Горячая клавиша
Год назад я как-то мог заменять быстро строчки нажимал то ли сочетание кнопок то ли просто кнопку и вылезала менюшка там можно было из...

горячая клавиша
как сделать горячую клавишу Alt+F4?

Стандартная горячая клавиша
Скажите, какая клавиша выводит подсказки при вводе текста ну например ввожу Str и дальше забыл, при нажатии клавиши вылазит менюшка и там...

Горячая клавиша в надстроке
Всем, Здравствуйте! Помогите разобраться. Почему в макросе не срабатывает горячая клавиша SHIFT+k ??? Уже все перепробовал =(((,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru