不重视,但允许互动?

Windows 7中的屏幕键盘可让您在使用键盘输入时将焦点保持在文本框上。 在C#和.Net中,如何在接受输入时强制另一个应用程序保持焦点,就像Win7屏幕键盘一样? 或者也许是一个更好的方式来表达它,我怎么能不让我的应用程序在与之交互时关注?

我尝试过LockSetForegroundWindow并且没有看到它的结果。

您必须在WS_EX_NOACTIVATE上设置WS_EX_NOACTIVATE扩展样式。 最简单的方法是使用P / Invoke。

 private const int WS_EX_NOACTIVATE = 0x08000000; private const int GWL_EXSTYLE = -20; [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int GetWindowLong(IntPtr hwnd, int index); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle); ... var window = new Window(); window.SourceInitialized += (s, e) => { var interopHelper = new WindowInteropHelper(window); int exStyle = GetWindowLong(interopHelper.Handle, GWL_EXSTYLE); SetWindowLong(interopHelper.Handle, GWL_EXSTYLE, exStyle | WS_EX_NOACTIVATE); }; window.Show(); 

您还可以使用WPF互操作类HwndSource来创建窗口。 它的构造函数接受扩展窗口样式。