Я создал экранную клавиатуру с помощью 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;
}
}
}
Переопределенная функция предотвращает фокусировку формы. Чтобы я мог отправлять нажатия клавиш другому приложению, которое находится в фокусе.