Я хочу написать виртуальную клавиатуру, такую как окна на экранной клавиатуре для сенсорного экрана. Но у меня проблема с моей виртуальной клавиатурой, крадущей фокус из используемого приложения. Окна на экранной клавиатуре фокусируются на текущем приложении, даже когда пользователь нажимает на него. Есть ли способ сделать то же самое с окнами в С#?
Единственное, что я могу сделать сейчас, - отправить событие клавиатуры в конкретное приложение, например блокнот в следующем коде. Если бы я мог сделать форму неактивной, я мог бы получить текущее сфокусированное окно с помощью 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");
}
Есть ли способ сделать это? Любые предложения лучшего способа иметь форму отправки событий клавиатуры в используемое приложение?
Спасибо!!