Имитировать окно для фокусировки

Как я могу имитировать внешнее окно как сфокусированное окно? Мне нужно это, потому что я хочу отправить ключи в окно блокнота, и он работает только в том случае, если окно блокнота имеет фокус. Но я не хочу терять фокус на моем собственном окне.

public IntPtr Find(string taskName, string windowName)
{
 return Fenster.FindWindow(taskName, windowName);
}
public void Send(IntPtr hwnd, string text)
{
 if (!hwnd.Equals(IntPtr.Zero))
 {
 SendKeys.Send(text);
 }
}
public bool SetForeground(IntPtr hwnd)
{
 return SetForegroundWindow(hwnd); 
}

[DllImport("user32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lp1, string lp2);

[DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetForegroundWindow(IntPtr hWnd);

Большое спасибо!

1 ответ

Лучшим решением было бы получить HWND окна, которое вы хотите контролировать, и отправить ключевое сообщение (WM_KEY_DOWN и WM_KEY_UP или WM_CHAR - может зависеть от Приложения и цели) напрямую через SendMessage или PostMessage.

licensed under cc by-sa 3.0 with attribution.