访问Win8 Metro风格的应用程序中的其他进程

时间:2011-10-16 20:19:38

标签: c# windows-8 windows-runtime microsoft-metro

我正在尝试构建一个Windows 8“metro-style”应用程序,它将作为“应用程序杀手”运行。对于那些使用过Win8(技术预览版)的人,你会注意到一旦你打开一个都市风格的应用程序你就无法关闭它(不进入任务管理器并结束这个过程)。

我的挑战是我无法从我的都市风格的应用程序访问'System.Diagnostics.Process',也不知道WinRT中是否有类似的替代品。我还考虑构建一个单独的应用程序,为我的metro应用程序提供服务以进行交互,但我想用一个应用程序执行此操作。

从根本上说,我正在寻找一种模式来构建利用.NET 4.0组件的Metro风格的应用程序,特别是能够枚举和杀死PC上运行的其他进程。

澄清:我不太关心这个特定的应用程序,而不是在Metro风格的应用程序中访问那种类型的.NET功能

由于

4 个答案:

答案 0 :(得分:8)

根据我的理解(观看Build2011视频),Metro App将无法做到这一点......

流程之间的交互仅限于特定的合同(右侧的魅力:搜索,发送到)。

Think Phone,而不是桌面。

您可能可以构建非Metro Win8应用程序。

答案 1 :(得分:8)

对于您的具体问题,此功能不可用。不允许应用与其他应用互动或干扰。

要回答更一般的问题,与桌面应用程序可用的API相比,Metro风格应用程序可用的API受到限制。 C#有一个subset的.Net库,就像Silverlight一样。对于C ++,情况也是如此,其中subset桌面Win32 / COM API可用。

答案 2 :(得分:3)

不要在此浪费太多时间。我希望在测试版中可以包含一个关闭选项(可能甚至是一个魅力)。在此之前使用键盘Alt-F4或任务管理器

答案 3 :(得分:-1)

C ++:

Window::Current->CoreWindow->Close();

Window::Current->Close();

我没有探究这两者之间的区别(更准确地说,我不知道CoreWindowCurrent的区别。我可以假设......

我在Win7机器上使用带有Win8的Oracle VBox来使用VS 11开发C ++ Metro应用程序。我使用了上述两种方法。我在任务管理器中验证了应用程序没有在Win8和模拟器上运行。