我在应用程序中有一个 WPF 窗口,我通过调用MainView.Activate();
和MainView.BringIntoView();
方法在某些特定场景中激活它。它还将焦点设置在此“MainView”窗口上。
但我的要求是这个窗口不应该得到焦点。即我的光标仍应保留在以前的应用程序上(记事本、word 等)
我尝试使用MainView.ShowActivated="False"
但没有用。我需要使用这里提到的 HwndSource还是什么?
在肯特的帮助下我使用的代码(只有在窗口最小化时才有效):
IntPtr HWND_TOPMOST = new IntPtr(-1);
const short SWP_NOMOVE = 0X2;
const short SWP_NOSIZE = 1;
const short SWP_NOZORDER = 0X4;
const int SWP_SHOWWINDOW = 0x0040;
Process[] processes = Process.GetProcesses(".");
foreach (var process in processes)
{
IntPtr handle = process.MainWindowHandle;
if (handle != IntPtr.Zero)
{
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
}
}