在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