首页 > 解决方案 > 如何从另一个进程中取消隐藏 WPF 窗口?

问题描述

当按下“X”按钮时,我有需要隐藏(而不是关闭)的 WPF 程序。

同时,有一个 ac# 程序需要在某个按钮上取消隐藏它。

隐藏 WPF 程序效果很好。问题是,当试图从其他 c# 进程中取消隐藏它时,WPF 窗口显示为黑色(好像窗体本身在显示窗口时仍然隐藏)。

有任何想法吗?

尝试更改 ShowWindow() 函数上的标志,没有帮助。尝试不隐藏 WPF 窗口但更改可见性,结果相同。

用于隐藏主窗口的 WPF 代码:

void MainWindow_Closing(object sender, CancelEventArgs e)
{
    e.Cancel = true;
    Hide();

}

c#代码:

var myHandle= UIWin32.FindWindow(null, "My title");
UIWin32.ShowWindow(myHandle, UIWin32.Win32Flags.SW_SHOW);
UIWin32.ShowWindow(myHandle, UIWin32.Win32Flags.SW_RESTORE);
UIWin32.SetForegroundWindow(myHandle);

标签: c#wpfprocess

解决方案


ShowWindow您可以像这样使用带有 Redraw 标志的MoveWindow函数之后:

MoveWindow(handle,0,0,width,height,true);

签名:

[DllImport("User32.dll")]
extern bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw);

推荐阅读