Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/98: Рейтинг темы: голосов - 98, средняя оценка - 5.00
-12 / 4 / 0
Регистрация: 14.10.2012
Сообщений: 17

Открытие скрытой формы по нажатию горячих клавиш на клавиатуре

14.10.2012, 14:03. Показов 18421. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На форме есть кнопка которая скрывает эту форму! Как после этого открыть эту форму по нажатию горячих клавиш?
Это код кнопки который скрывает форму:
C#
1
2
3
4
5
6
7
8
 private void button1_Click(object sender, EventArgs e)
        {
            this.Opacity = 0.01;
            this.ShowIcon = false;
            this.ShowInTaskbar = false;
            this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
            this.Load += new System.EventHandler(this.Form1_Load);
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2012, 14:03
Ответы с готовыми решениями:

Реализация горячих клавиш на виртуальной клавиатуре С++ builder
Доброго времени суток, нужна помощь! Есть готовая и рабочая экранная клавиатура, написанная в builder.Каким образом можно на ней...

Во время набора текста вставлять разные заранее определенные фразы по нажатии горячих клавиш на клавиатуре
Здравствуйте, нужно создать программу которая позволяла бы во время набора текста вставлять разные заранее определенные фразы по нажатии...

Действия по нажатию клавиш на клавиатуре
Всем Доброго времени суток. При видите пожалуйста пример программирования клавиш в C#, как приме что бы при нажатии одной клавиши...

24
29 / 29 / 2
Регистрация: 06.04.2012
Сообщений: 78
14.10.2012, 14:14
Событие Form1.KeyPress вам в помощь
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
14.10.2012, 17:23
Если форма остается активна? То просто ловите KeyDown и по нажатию нужных клавиш делаете форму видимой. Если же неактивна, то нужно делать глобальный хук клавиатуры.

Код:
C#
1
2
3
4
5
6
7
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A) //При нажатии Ctrl + A
    {
        //Показываем форму
    }
}
0
-12 / 4 / 0
Регистрация: 14.10.2012
Сообщений: 17
14.10.2012, 17:33  [ТС]
Форма не активна! Как применить глобальный хук?
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
14.10.2012, 18:58
Это довольно не простая тема... Но на форуме довольно популярна. Вот.
Я делал так:

Класс хука:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
    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(code)));
                }
            }
 
            // пробрасываем хук дальше
            return CallNextHookEx(_hHook, code, (int)wParam, lParam);
        }
    }
Его использование:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private Hook _hook;
 
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
 
public Form1() //Конструктор формы
{
    InitializeComponent();
    keybd_event(0x90, 0x45, 0x1, (UIntPtr)0);
 
    // 0x90 клавиша NumLock
    _hook = new Hook(0x90); //Передаем код клавиши на которую ставим хук, тут это CapsLock
 
    _hook.KeyPressed += new KeyPressEventHandler(_hook_KeyPressed);
    _hook.SetHook();
}
 
void _hook_KeyPressed(object sender, KeyPressEventArgs e) //Событие нажатия клавиш
{
    this.Visible = true; //показываем форму 
}
1
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
15.10.2012, 17:52
Не пойму какие клавиши надо нажать чтобы сработало?(((
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
15.10.2012, 18:06
В моем примере - NumLock!
0
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
16.10.2012, 09:29
блин, у меня не пашит, пишу так в конце MainForm.ActiveForm.TopMost=true; при нажатии Num Lock выдает ошибку:Object reference not set to an instance of an object.
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
16.10.2012, 18:19
Вот код, все работает!
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private Hook _hook;
 
        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
 
        public Form1() //Конструктор формы
        {
            InitializeComponent();
            keybd_event(0x90, 0x45, 0x1, (UIntPtr)0);
 
            // 0x90 клавиша NumLock
            _hook = new Hook(0x90); //Передаем код клавиши на которую ставим хук, тут это CapsLock
 
            _hook.KeyPressed += new KeyPressEventHandler(_hook_KeyPressed);
            _hook.SetHook();
        }
 
        void _hook_KeyPressed(object sender, KeyPressEventArgs e) //Событие нажатия клавиш
        {
            this.Visible = !this.Visible; //показываем форму 
            this.Activate();
        }
    }
 
    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(code)));
                }
            }
 
            // пробрасываем хук дальше
            return CallNextHookEx(_hHook, code, (int)wParam, lParam);
        }
    }
}
0
10 / 10 / 3
Регистрация: 30.01.2012
Сообщений: 366
17.10.2012, 09:29
теперь работает)))
DimanRu, подскажи как поставить на две кнопки!!
Например Ctrl+NumLock
0
0 / 0 / 0
Регистрация: 09.10.2012
Сообщений: 20
17.10.2012, 16:13
Не легче скрыть форму так:
C#
1
                 this.Hide();
?
0
 Аватар для Майор КГБ
0 / 0 / 1
Регистрация: 28.10.2012
Сообщений: 10
28.10.2012, 23:25
Цитата Сообщение от DimanRu Посмотреть сообщение
Вот код, все работает!
Воспользовался вашим кодом, всё на удивление работает.
Но одна проблема. Как заблокировать эту клавишу?

Мне требуется сделать Boss Key.

Т.е. нажимаю F1 - программа прячется в трей и висит там тихонько, жму снова F1 и программа появляется на экране в активном фрейме. При этом не хочу что бы открывалась "Справка" виндовс или ещё что то...

Если приведёте полный код готового фрейма который будет сворачиваться/разворачиваться по F1 буду крайне вам признателен. Вторые сутки мучаюсь...
0
3 / 3 / 0
Регистрация: 27.07.2015
Сообщений: 36
05.09.2017, 16:09
как в этот класс отправить комбинацию "Сtrl + C", по одной кнопке все ок
0
0 / 0 / 0
Регистрация: 18.04.2018
Сообщений: 33
09.10.2018, 08:56
DimanRu, Есть вопрос как сделать так что бы при нажатии на клавишу на форме отображались символы которые были нажаты . Как при активной форме так и нет . Много читал что можно сделать хук что бы он копировал код нажатой клавиши и отправлял на textbox например. Но не понял как сделать это на C#

Пишу курсовую ,и надо написать кейлоггер.
Как я понял надо с начало написать хук для копирования кодов клавиш которые были нажаты .
0
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 79
10.07.2019, 12:56
Здравствуйте, вы нашли решение про комбинацию?

Добавлено через 3 минуты
подскажи как поставить на две - три кнопки!!
Например Ctrl+Shift+Ё
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
10.07.2019, 22:00
Цитата Сообщение от Denis3961 Посмотреть сообщение
подскажи как поставить на две - три кнопки!!
Например Ctrl+Shift+Ё
1. Создаёшь новый класс
Код Класса

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
 
namespace keyKode //тут будет твой нэймспейс
{
    /// <summary>
    /// A class that manages a global low level keyboard hook
    /// </summary>
    class globalKeyboardHook //так называется мой класс
    {
        #region Constant, Structure and Delegate Definitions
        /// <summary>
        /// defines the callback type for the hook
        /// </summary>
        // public delegate int keyboardHookProc(int code, int wParam, ref keyboardHookStruct lParam);
 
        public struct keyboardHookStruct
        {
            public int vkCode;
            public int scanCode;
            public int flags;
            public int time;
            public int dwExtraInfo;
        }
 
        const int WH_KEYBOARD_LL = 13;
        const int WM_KEYDOWN = 0x100;
        const int WM_KEYUP = 0x101;
        const int WM_SYSKEYDOWN = 0x104;
        const int WM_SYSKEYUP = 0x105;
        #endregion
 
        #region Instance Variables
        /// <summary>
        /// The collections of keys to watch for
        /// </summary>
        public List<Keys> HookedKeys = new List<Keys>();
        /// <summary>
        /// Handle to the hook, need this to unhook and call the next hook
        /// </summary>
        IntPtr hhook = IntPtr.Zero;
        #endregion
 
        #region Events
        /// <summary>
        /// Occurs when one of the hooked keys is pressed
        /// </summary>
        public event KeyEventHandler KeyDown;
        /// <summary>
        /// Occurs when one of the hooked keys is released
        /// </summary>
        public event KeyEventHandler KeyUp;
        #endregion
 
        #region Constructors and Destructors
        /// <summary>
        /// Initializes a new instance of the <see cref="globalKeyboardHook"/> class and installs the keyboard hook.
        /// </summary>
        public globalKeyboardHook()
        {
            hook();
        }
 
        /// <summary>
        /// Releases unmanaged resources and performs other cleanup operations before the
        /// <see cref="globalKeyboardHook"/> is reclaimed by garbage collection and uninstalls the keyboard hook.
        /// </summary>
        ~globalKeyboardHook()
        {
            unhook();
        }
        #endregion
 
        #region Public Methods
        /// <summary>
        /// Installs the global hook
        /// </summary>
        public void hook()
        {
 
            IntPtr hInstance = LoadLibrary("User32");
            //hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProc, hInstance, 0);
            delegateHookProc = hookProc;
            hhook = SetWindowsHookEx(WH_KEYBOARD_LL, delegateHookProc, hInstance, 0);
        }
        public delegate int keyboardHookProc(int code, int wParam, ref keyboardHookStruct lParam);
        keyboardHookProc delegateHookProc;
        /// <summary>
        /// Uninstalls the global hook
        /// </summary>
        public void unhook()
        {
            UnhookWindowsHookEx(hhook);
        }
 
        /// <summary>
        /// The callback for the keyboard hook
        /// </summary>
        /// <param name="code">The hook code, if it isn't >= 0, the function shouldn't do anyting</param>
        /// <param name="wParam">The event type</param>
        /// <param name="lParam">The keyhook event information</param>
        /// <returns></returns>
        public int hookProc(int code, int wParam, ref keyboardHookStruct lParam)
        {
            if (code >= 0)
            {
                Keys key = (Keys)lParam.vkCode;
                if (HookedKeys.Contains(key))
                {
                    KeyEventArgs kea = new KeyEventArgs(key);
                    if ((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null))
                    {
                        KeyDown(this, kea);
                    }
                    else
                    if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null))
                    {
                        KeyUp(this, kea);
                    }
                    if (kea.Handled)
                        return 1;
                }
            }
            return CallNextHookEx(hhook, code, wParam, ref lParam);
        }
        #endregion
 
        #region DLL imports
        /// <summary>
        /// Sets the windows hook, do the desired event, one of hInstance or threadId must be non-null
        /// </summary>
        /// <param name="idHook">The id of the event you want to hook</param>
        /// <param name="callback">The callback.</param>
        /// <param name="hInstance">The handle you want to attach the event to, can be null</param>
        /// <param name="threadId">The thread you want to attach the event to, can be null</param>
        /// <returns>a handle to the desired hook</returns>
        [DllImport("user32.dll")]
        static extern IntPtr SetWindowsHookEx(int idHook, keyboardHookProc callback, IntPtr hInstance, uint threadId);
 
        /// <summary>
        /// Unhooks the windows hook.
        /// </summary>
        /// <param name="hInstance">The hook handle that was returned from SetWindowsHookEx</param>
        /// <returns>True if successful, false otherwise</returns>
        [DllImport("user32.dll")]
        static extern bool UnhookWindowsHookEx(IntPtr hInstance);
 
        /// <summary>
        /// Calls the next hook.
        /// </summary>
        /// <param name="idHook">The hook id</param>
        /// <param name="nCode">The hook code</param>
        /// <param name="wParam">The wparam.</param>
        /// <param name="lParam">The lparam.</param>
        /// <returns></returns>
        [DllImport("user32.dll")]
        static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref keyboardHookStruct lParam);
 
        /// <summary>
        /// Loads the library.
        /// </summary>
        /// <param name="lpFileName">Name of the library</param>
        /// <returns>A handle to the library</returns>
        [DllImport("kernel32.dll")]
        static extern IntPtr LoadLibrary(string lpFileName);
        #endregion
    }
}



2. на основной форме
C#
1
2
3
4
5
6
7
public Form1()
        {
 
            InitializeComponent();
            this.KeyPreview = true;
            
        }
3. далее
C#
1
2
3
4
5
6
7
8
9
10
globalKeyboardHook gkh = new globalKeyboardHook(); //Новый экз класса
        private void Form1_Load(object sender, EventArgs e)
        {
           //добавляем какие будут горячие клавиши
            gkh.HookedKeys.Add(Keys.F5);
            gkh.HookedKeys.Add(Keys.F6);
            gkh.HookedKeys.Add(Keys.R);
            // и т.п.
            gkh.KeyUp += new KeyEventHandler(gkh_KeyUp);
        }
4.Ну и ловим нажатие

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void gkh_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F5)
            {
                MessageBox.Show("Ох ёмаё.\rМы нажали клавишу F5", "Inforation" , MessageBoxButtons.OK, MessageBoxIcon.Information);
                textbox1.Text = "Нажата клавиша F5";
                
            }
    
            if (e.KeyCode == Keys.F6)
            {
                MessageBox.Show("Ох ёмаё.\rМы нажали клавишу F6", "Inforation" , MessageBoxButtons.OK, MessageBoxIcon.Information);
                textbox1.Text = "Нажата клавиша F6";
                
            }
             if (e.Control && e.Alt && e.KeyCode == Keys.R)
            {
                MessageBox.Show("А теперь Мы нажали три клавиши ALT+CTRL+R" , "Белиссимо!");
                textbox1.Text = "Нажаты три клавиши ALT+CTRL+R";
                
            }
        }
Думаю схема понятна.
2
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 79
12.07.2019, 12:03
спасибо
0
1 / 1 / 0
Регистрация: 21.09.2015
Сообщений: 79
12.07.2019, 12:40
помогите.....не работает вообще почему-то....может я не так что делаю...
Вложения
Тип файла: rar Process.rar (937.2 Кб, 14 просмотров)
0
.NET
133 / 91 / 44
Регистрация: 17.08.2015
Сообщений: 296
12.07.2019, 12:49
Цитата Сообщение от anomal6 Посмотреть сообщение
Думаю схема понятна.
Простите, а разве лишний класс необходим? Работает и так

C#
1
2
3
4
5
6
7
private void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            if(e.Control && e.Alt && e.KeyCode == Keys.R)
            {
                MessageBox.Show("Combination pressed");
            }
        }
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
12.07.2019, 13:13
Цитата Сообщение от M1ke423 Посмотреть сообщение
Простите, а разве лишний класс необходим?
Если форма активна то нет, доп класс создавать не надо.
Класс это для глобального хука, например когда форма скрыта или свёрнута.
сочетание клавиш считывается с активной формы. Попробуйте в свёрнутую форму в TextBox вставить слово. Никак? потому что надо активировать элемент для этого. Здесь принцип такой же
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2019, 13:13
Помогаю со студенческими работами здесь

Подскажите как сделать, чтобы по нажатию горячих клавиш курсор мыши возвращался в центр экрана
Нужно чтобы после нажатия нескольких клавиш курсор возвращался в центр экрана.

Нажатие-отжатие кнопок по нажатию-отжатию клавиш на клавиатуре
Всем доброго времени суток! Проблема такая: 1) В VB 6.0 нужно описать кнопку на нажатие и отжатие 2) Ситуация: Есть кнопка, ее нужно...

Как сделать Submit скрытой формы по нажатию линка?
Sobstvenno, takaya problema - nado peredat' dannie iz odnoy stranocy v druguyu cherez Request.Form, a stranica dolzhna sostoyat' iz odnih...

Открытие скрытой формы без использования кнопки
Доброго времени суток! Возникла проблема: знаю как открыть вторую форму по нажатию кнопки, но окно программы будет выглядеть гораздо...

Отлов горячих клавиш вне формы
Хочу сделать горячие клавиши при не активной форме, знаю надо использовать winAPI функции, но нигде нормального ничего не нашел по данному...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru