0

У меня есть действие по нажатию привязанной клавиши, это MOUSEEVENTF_LEFTDOWN, когда я сворачиваю приложение и нажимаю на привязанную клавишу, у меня никакого действия не происходит, однако когда я захожу в само приложение у меня всё работает Код :

        public void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
        if (Keys.A <= e.KeyCode && e.KeyCode <= Keys.Z)
        {//Character keys
            textBox1.Text = e.KeyCode.ToString();
        }
        if (Keys.F1 <= e.KeyCode && e.KeyCode <= Keys.F9)
        { //func keys (F)
            textBox1.Text = e.KeyCode.ToString();
        }
        if (Keys.D0 <= e.KeyCode && e.KeyCode <= Keys.D9)
        { //number keys
            textBox1.Text = e.KeyCode.ToString().Replace("D", null);
        }
    if (textBox1.TextLength == 1)
    {
        button2.Enabled = true;
    }

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 cButtons, IntPtr dwExtraInfo); public const int MOUSEEVENTF_LEFTDOWN = 0x02; public const int MOUSEEVENTF_LEFTUP = 0x04; public const int MOUSEEVENTF_RIGHTDOWN = 0x08; public const int MOUSEEVENTF_RIGHTUP = 0x10; private void button3_KeyUp(object sender, KeyEventArgs e) { KeysConverter kc = new KeysConverter(); string keystring = textBox1.Text; Keys keyspecial = (Keys)kc.ConvertFromString(keystring); if (e.KeyCode == keyspecial) {

        mouse_event(MOUSEEVENTF_LEFTDOWN, 1, 1, 0, IntPtr.Zero);
        Thread.Sleep(5);
        mouse_event(MOUSEEVENTF_LEFTUP, 1, 1, 0, IntPtr.Zero);

Arslan I.
  • 384
  • 2
  • 11
  • Осталось угадать ваш код и придумать решение. :) Но телепатически могу предположить, что вам следует копать в сторону "как сделать Mouse Hook". – aepot Nov 09 '21 at 20:13
  • Всё, код добавил. – Arslan I. Nov 09 '21 at 20:22
  • 1
    Ну, код в обработчике события, как вы возмете кнопку button3 в клавиатурный фокус в свернутом окне? Никак, это невозможно. Предполагаю, что вы хотите, чтобы код выполнился при нажатии на клавишу или комбинацию клавиш, из кода непонятно что именно. Но я попробую предположить, что это комбинация горячих клавиш - оно? – aepot Nov 09 '21 at 20:33
  • Это при нажатии на выбранную пользователем клавишу (не комбинацию) – Arslan I. Nov 09 '21 at 20:40
  • Я пробовал заменить button3_KeyUp на Form1_KeyUp,тож не помогло – Arslan I. Nov 09 '21 at 20:41
  • И не должно помочь, вы же внимательно прочитали комментарий про клавиатурный фокус выше? Тогда у меня нет готовых ответов, но решение - скорее всего Keyboard Hook. То есть кейлоггер, на такое решение кстати может ругаться антивирус. Еще разница в том, что если вы используете хук, то клавиша просто отслеживается, то есть ее нажатие одновременно отработает как для обычной клавиши, например буква напечатается, так и запустит код внутри вашего приложения. В случае с горячими клавишами, регистрация монопольная. То есть ваше приложение полностью перехватит на себя все нажатия комбинации. – aepot Nov 09 '21 at 20:44
  • Вы же правильно поняли суть проблемы? У вас вообще не вызывается обработчик button3_KeyUp. Код внутри него не при чем. – aepot Nov 09 '21 at 20:46
  • 1
    Хорошо, я всё понял – Arslan I. Nov 09 '21 at 20:47

0 Answers0