2013-04-08 143 views
2

我有两个版本的自定义软件。 Modern/Metro应用程序(AppM)和我的传统桌面应用程序(AppD)。我已经使用了解清楚的清单为AppM创建了自定义协议。我已经编辑了注册表,为AppD制作了一个自定义协议处理程序,并测试了我确实可以使用协议激活从运行对话框(WIN + R)启动AppD,方法是提供协议并敲击回车,“AppD://”这个案例。我希望能够通过AppM从AppD和AppD启动AppM。我为每个添加了处理程序。在AppD中,我使用Process.Start(uri),并在AppM中使用Launcher.LaunchUriAsync(uri)。我可以让AppM从AppD启动,但我从未从AppM启动AppD启动。我GOOGLE了,无法找到任何参考。我假设这是不可能的,而且可能非常需要处理权限。由于这项任务对我来说是项目中的一部分,我需要证明这是不可能的或找到解决方案。Windows 8协议从现代应用程序激活桌面应用程序

我已经使用C#/ XAml以及HTML/JS测试了这一点,发现Launcher.LaunchUriAsync(uri).when()成功函数被调用,但成功标志为false是有趣的。没有错误(或者至少err函数从未被击中)。我想得到一个更好的错误信息,并且我正在试图以这种方式进行挖掘。

所以帮助实际问题,或者帮助如何调试这将是不胜感激。

更新:为了消除自己的代码,我下载并安装了launch by association example,只是改变了VAR uriToLaunch =“http://bing.comVAR uriToLaunch =“APPD:”和失败每次。这个协议与注册表相关联,我使用的方法是通过在桌面上使用WIN + R运行它来验证这一点,并且应用程序启动得很好。

+0

根据读取的一些msdn链接,它看起来像可能但不确定。 我会建议几件事 - 1)请参考msdn中这些链接下的评论,并尝试一下。 [link1](http://msdn.microsoft.com/en-us/library/windows/apps/hh452690.aspx)[link2](http://msdn.microsoft.com/en-us/library/windows/ apps/hh701484.aspx) 2)下载此[关联示例](http://go.microsoft.com/fwlink/?linkid=231484&clcid=0x804),然后尝试启动打开流程 – Sushil 2013-04-09 03:43:03

+0

感谢关于关联示例的提示。我已经更新了这篇文章,以便包括我的冒险经历。这看起来像从现代应用程序启动桌面应用程序可能会被阻止。 – 2013-04-11 18:46:15

+0

Microsoft拒绝执行此操作的应用程序。 – 2013-05-18 21:45:37

回答

0

BatRT是一个应用程序,它允许您使用URI调用从metro应用程序运行批处理文件。这应该可以解决你的问题。 只需在您的metro应用程序中创建批处理文件,然后使用BatRT来执行批处理文件。代码片段可在上面的链接中找到。

相关问题