Я хочу написать виртуальную клавиатуру, например экранную клавиатуру Windows для сенсорного экрана шт.
Но у меня проблема с тем, что моя виртуальная клавиатура крадет фокус у используемого приложения. Экранная клавиатура Windows поддерживает фокус на текущем приложении, даже когда пользователь нажимает на него. Есть ли способ сделать то же самое с окнами форм в C #?
Единственное, что я могу сейчас сделать, - это отправить событие клавиатуры в определенное приложение, например блокнот в следующем коде. Если бы я мог сделать форму не фокусируемой, я мог бы получить текущее сфокусированное окно с GetForegroundWindow.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
IntPtr calculatorHandle = FindWindow("notepad", null);
SetForegroundWindow(calculatorHandle);
SendKeys.SendWait("111");
}
Есть ли способ, которым это можно сделать? Есть ли какие-либо предложения по улучшению формы отправки событий клавиатуры используемому приложению?
Спасибо !!