Я сделал экранную клавиатуру с c # Windows Forms.Я использую функцию Sendkeys.Send()
для отправки нажатий клавиш.Все буквы кроме буквы i работают нормально.Когда я нажимаю на клавиатуре букву i , когда Microsoft Word открыт, она отправляет Ctrl + Alt + I и открывает печатьдиалог.То же самое и в Notepad ++.Но он прекрасно работает, когда я пытаюсь набрать в блокноте.
В моем коде я посылаю клавиши с SendKeys.Send(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;
}
}
}
Переопределенная функция состоит в том, чтобы предотвратить фокусировку формы.Так что я могу отправить нажатия клавиш в другое приложение, которое имеет фокус.