c# - 如何从另一个进程中取消隐藏 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);
解决方案
在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);
推荐阅读
- azure - 调用rest api时Web活动抛出overlimit错误
- python - Python - Pytrends 响应错误代码 400 429
- javascript - 带有 Enzyme 和 TypeScript 的浅层 HOC
- javascript - Newtonsoft.JsonConvert - 如何将 JavaScript 对象反序列化为一个属性为 Enum 的对象?
- python - 一个方法如何调用它在python中所属的类?
- c# - SecurityTokenInvalidAudienceException:IDX10214:观众验证失败
- php - Imagick在指定区域的图像上居中文本
- grafana - grafana 可以绘制字符串类型的 influxdb 时间序列吗?
- c# - 不同的 AppDomain 损坏状态异常 (AccessViolationException) 应用程序池工作进程
- for-loop - 我可以在空手道中使用 for 循环吗?