如何在Windows 10应用程序中以编程方式关闭打印UI界面?

3
我正在设计一个Windows 10通用应用程序,使用这个https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Printing/cs存储库作为指南。我目前通过调用以下代码实现完全功能的打印:
await Printmanager.ShowPrintUIAsync(); 

我的应用程序还有一个活动计时器,如果用户在一段时间内不活动,就会将其注销。这部分功能正常运行,但我无法在注销后关闭打印UI。

注意:通常要关闭窗口的异步操作,可以执行类似以下操作:

IAsyncOperation<bool> printOperation = Printmanager.ShowPrintUIAsync();
printOperation.Cancel();

对于其他AsyncOperation出现的情况,这个方法可以奏效,但是我无法将其应用于打印UI,因为打印UI不是应用程序的子进程,而是一个独立的进程。

提前感谢!

另外,似乎在Windows 8中有一种解决方案可以杀掉进程,但是在Windows 10应用程序中不再支持(Process.GetProcessByName .... or FindWindow)。

也许有一些方法可以按名称杀掉Windows 10进程?


2
我可能错了,但这只适用于Windows桌面应用程序,对吗? - gwcoderguy
1
在 GetProcessByName 的文档中,它说:仅适用于 Windows 2000 Professional [桌面应用程序],此外,Systems.Diagnotics dll 似乎不受 Windows 10 支持。再次强调,我可能是错的(希望如此!)。 - gwcoderguy
2
你确定这个可以在Windows 10通用应用程序中使用吗?我无法获取dll文件。 - gwcoderguy
1
FindWindow不能在Windows Store应用程序中使用,该函数是GDI API的一部分,它基于Windows句柄,而这些句柄甚至不存在于Windows Store/Universal/Phone/Metro/WinRT应用程序中。顺便说一下,System.Diagnostics.Process类也受到限制。 - yms
1
我认为它被支持。你确定你是从正确的位置调用它吗? - yms
显示剩余9条评论
1个回答

1

你不能这样做。

所有的Metro风格应用程序都在高度沙盒化的环境中运行,没有直接启动外部应用程序的方法。 参考自文章

也许解决方案是创建代理。 如何从Metro应用程序启动外部程序

这可能会对你有所帮助,因为你可以间接地终止该进程。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接