在WPF中将窗口移到最前面

如何将WPF应用程序带到桌面的最前面?到目前为止,我已经尝试过:

SwitchToThisWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle, true);

SetWindowPos(new WindowInteropHelper(Application.Current.MainWindow).Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);

SetForegroundWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle);

没有一个人在做这项工作(Marshal.GetLastWin32Error()就是说这些操作已成功完成,并且每个定义的P /

Invoke属性都具有SetLastError=true)。

如果我创建一个新的空白WPF应用程序,并SwitchToThisWindow使用一个计时器调用,它将完全按预期工作,因此我不确定为什么在我的原始情况下它不起作用。

:我正在与全局热键一起执行此操作。

回答:

好吧,我想出了一个解决方案。我正在从用于实现热键的键盘挂钩进行呼叫。如果我将其暂停,将其按预期方式工作。这是一个麻烦,但我不知道为什么它最初不起作用。

void hotkey_execute()

{

IntPtr handle = new WindowInteropHelper(Application.Current.MainWindow).Handle;

BackgroundWorker bg = new BackgroundWorker();

bg.DoWork += new DoWorkEventHandler(delegate

{

Thread.Sleep(10);

SwitchToThisWindow(handle, true);

});

bg.RunWorkerAsync();

}

以上是 在WPF中将窗口移到最前面 的全部内容, 来源链接: utcz.com/qa/432606.html

回到顶部