【发布时间】:2019-10-11 09:27:24
【问题描述】:
我正在尝试从另一个应用程序恢复最小化、暂停的 UWP 应用程序, 但我无法找到可行的解决方案。
通过 PInvoke 使用 .NET Core 2.2 和 win32 API
我尝试设置窗口位置,设置窗口位置但没有任何效果。我发现的唯一原因是我要恢复的进程被挂起。 我做了一些研究,该应用程序是由 WinRT 堆栈管理的 UWP。遗憾的是 我找不到恢复进程并显示它的方法
感谢您的每一个帮助或建议。
Process proc = Process.GetProcessesByName("HxOutlook").FirstOrDefault();
if (proc != null)
{
ShowWindow(proc.MainWindowHandle, SW_SHOWNORMAL); // Make the window visible if it was hidden
ShowWindow(proc.MainWindowHandle, SW_RESTORE); // Next, restore it if it was minimized
SetForegroundWindow(proc.MainWindowHandle); // Finally, activate the window
}
【问题讨论】:
-
邮件是一个 UWP 应用。
-
No proc 不是没有并且有正确的句柄。此代码适用于非 UWP 应用,例如 spotify 的客户端。
-
当线程挂起时 - 它不会处理 windows 消息。没有这个 - 窗口状态将不会改变。所以没有第一个取消暂停过程 - 没有解决方案
-
MainWindowHandle 是 .NET 的东西,本机 Win32 中不存在这个概念。您是否尝试过在实际应用程序窗口的实际 HWND 上调用 ShowWindow?你试过 ShowWindowAsync 了吗?
标签: c# windows winapi uwp .net-core