Отправка буквы i с помощью SendKeys

Я создал экранную клавиатуру с помощью C # Windows Forms. Я использую функцию Sendkeys.Send () для отправки нажатий клавиш. Все буквы, кроме буквы i , работают нормально. Когда я нажимаю букву i на клавиатуре, когда открыт Microsoft Word, он отправляет Ctrl + Alt + I и открывает распечатку. диалог. То же самое и в Notepad ++. Но он отлично работает, когда я пытаюсь ввести в блокнот.

В моем коде я отправляю ключи с помощью SendKeys.Send (value); , где value - это текст нажатой кнопки. Я получаю текст со следующим кодом:

string s = ((Button)sender).Text;

Есть комментарии о том, почему он не работает должным образом?

Изменить: я создал новый проект форм Windows с помощью всего лишь кнопки, и весь код приведен ниже. До сих пор не работает. Любая идея будет оценена по достоинству.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SendKeys.Send("i");
        }

        // Prevent form being focused
        const int WS_EX_NOACTIVATE = 0x8000000;
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams ret = base.CreateParams;
                ret.ExStyle |= WS_EX_NOACTIVATE;
                return ret;
            }
        }  
    }

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

9
задан jezrael 17 July 2015 в 03:08
поделиться