如何用命令行用app启动游戏Metro App

Win8运行命令、快捷键大全合集_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Win8运行命令、快捷键大全合集
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢5104人阅读
作者:Chris Sells&译:
包括 HTML、CSS 和 JavsScript 的 Web 技术正被 Metro 风格的程序采纳为视窗程序中首类(first-class)的开发技术。比较起来,JavaScript 不像传统 Web 服务器那样部署在一张又一张的页面上,Metro App 是本地安装在客户机器上的。这点很像传统的 Win 程序,但是直接可以使用 JavaScript 访问所在的底层 API,还能和其他程序相沟通。
注意,如果您倾向于 C#, C++, or VB withXAML,开发,请参阅。
在本教程中我们将会为您介绍如何透过 JavaScrip 来构建 Metro 风格的程序。通过 HTML5、层叠样式表(CSS3)和 JavaScript 这些技术,与您一起打造一个轻型的 RSS 客户端,并且尽量使得这个程序更好地彰显个性化(that conveys the right personality)。我们将引入包括控件、功能、布局、模板、数据绑定以及 JS 库这些核心的内容,而且,所述的这些技术已经在 Metro App 开发中都得到优化,可放心使用。根据此教程,阁下学习完毕后,应已具备初步开发
JS 版 Metro App 的能力。教程划分为三小节,估计20分钟阅读完一小节,当然,如果做好每个习题的话,时间可能会稍长一点。
Hello Win Metro
跟 web 页面那样,得先有一份 HTML 文件去写 Metro App。
&!DOCTYPE html&
&head&&title&你好Windows Metro styleapps!&/title&&/head&
&body&&h1&欢迎来到 Windows Metro styleapps&/h1&&/body&
如果把这 HTML 放在浏览器中运行,肯定没啥意思。不用多说,如果在 Metro App 中执行,则又是另外一番天地,当然您的客户,一般不会在乎那究竟是浏览器还是 Metro& App。只不过,有明显不同,就是 Metro App 会安装在 Window Store 中,跟其他 Win 程序一样。再者,若说单张 Web 页面,根本算不上叫做完整的程序,哪怕涉及样式、代码、图片资源的那些。现在,Metro App 不但包括这些,而且还提格为标准的应用程序,于是将有元数据和程序资源文件的出现:
用于描述程序本身的清单文件(manifest),包括程序名称、简介、启动页等等。
用于外观的图片文件或者图标文件。
用于Windows Store显示的图标 logo。
用于你程序启动时欢迎屏幕(a splash screen)。
程序清单(manifest)是一份名为 appxmanifest.xml 的 XML 文件。该文件包括了诸如程序名称、程序描述、图片引用等的详细情况,其中一项当属最重要的是指定程序的启动页。Microsoft Visual Studio 11 Express for Windows Developer Preview 可以自动导出程序清单,而还可以帮助你透过 JavaScript 来完成一系列任务,这些任务就是创建、编辑、打包、启动与调试您的 Metro 风格应用程序。
在&VS&中开发Windows Metro Apps
Microsoft Visual Studio 为开发视窗程序的工具,也是开发 Metro式程序的第一个工具。它不但提供了 HTML、CSS、JavaScript、图片编辑,以及用 JavaScript 来编辑程序清单等等此类一般开发任务,还包括整个开发周期的项目管理,涉及到源码管理、整合构建(build)以及部署等的许多过程。有几种 VS 版本的制定,我们这里拿来使用的是免费的 Visual Studio 11 Express for Windows Developer Preview 预览版本,在
Windows Software Development Kit (SDK)& for MetroApp 就有。安装一遍后就等于安装好了编译、打包、部署的那些工具。VisualStudio 11 Express for Windows Developer Preview 本身提供若干模板,如下图所示:
最简单的项目模板就是 Blank Application。运行之后生成 &Visual Studio 11 Express for WindowsDeveloper Preview&Metro style app using JavaScript 项目专属文件(.wwaproj )。
现在打开预设的 default.html 的话,你会发现这几乎全是空的内容,打开 js 目录下的 default.js 也同样如是。明显这里提供的是主干文件,等着你创造些内容添加进去。
欲进行调试,你点击“Debug & StartDebugging”就可以,它提供了开发者所熟悉的几项调试工具:
调试器,打断点、步进和监视 JS 数据和行为。
JS 控制台窗口(JavaScript ConsoleWindow),与JS对象命令行交互的地方。
DOM浏览器窗口,观察 HTML Document Object Model 或者元素样式的地方。
模拟器(Simulator),在开发环境中模拟相关设备的事件。
采用 JavaScript 编写的 MetroApp,除却语法,在访问 Windows 底层平台的时候与其他语言无异。但根据 JavaScript 程序员的某些特性又应该有一些尽量预设的包,可以反复使用的设计,也就是说,Windows 类库针对 JavaScript 特定提供了一组可复用的 JS 和 CSS 文件,以便在此基础上更好地体现 Windows 新特性。VS 模板中已经包含了一系列的 CSS 样式规则表,以便提供划一的 WinApp 的风格感官(look& feel)。最简捷的方式就是通过项目模板文件引入,它会自动包含
WinJS 所需的文件。
Blank Application 项目文件虽说空无一物的,却已包含有一定的样式在内。Metro 风格之所以称“风格”,应该说对样式有一点要求的。样式本身固然不是说要统一一致,因为许多情况下有你需要特定的布局、动作个性化的设计。我们这里就会举一个例子。实际上,尽管所谓 Metro 风格的程序是新鲜事物,但过往的经验仍值得学习研究。这里为大家介绍 Window 项目组里的一位精于此道的开发人员,Raymond Chen。陈先生是一本优秀图书《The Old New Thing》的作者,同时他还是 Weblog
陈先生的主要成果在于看到了一般人不容易看到 Win 平台上的缺失之处,或曰美中不足,并且将文字连同示例 Sample 资源积极地发表在他博客上。这样,都是 Win 的程序,我们可以通过这些素材展示新的构造方式。
由此,我们需要在他博文下载数据,才可以清楚哪些地方放置代码。
调用WinJS.Application对象
项目模板生成的 default.html 文件默认加载 WinJS 所需最低要求的 JS 和 CSS 文件:
&!DOCTYPE html&
&meta charset=&utf-8& /&
&title&RssReader&/title&
&!-- WinJS references --&
&link rel=&stylesheet& href=&/winjs/css/ui-dark.css& /&
&script src=&/winjs/js/base.js&&&/script&
&script src=&/winjs/js/wwaapp.js&&&/script&
&!-- RssReader references --&
&link rel=&stylesheet& href=&/css/default.css& /&
&script src=&/js/default.js&&&/script&
&/html&加入我们自己的内容:
&h1&The Old New Thing&/h1&
&div id=&downloadStatus&&&/div&
&div id=&posts&&&/div&
上面分别是一标题和两个 div 元素用于容器(placeholder)的作用,一个表示 RSS 下载时的状态如何;另一个为我们获取好 RSS 内容将来显示的地方。别忘了,我们要用到陈兄的那些样式文件:
/* default.css */
background-color: #
color: #000;
font-family: V
padding: 8
a:link, a:visited, a:active
color: #700;
font-weight:
text-transform:
font-family:
font-size: 22
width: 99%;
height: 100%;
.postTitle
color: #700;
font-size: 1.2
font-weight:
color: #666;
font-size: 11
.postContent
font-size:
line-height: 18
}为了使得 MetroApp 与其他应用程序之间整合,Windows 提供了一组程序级别(app-level)的消息事件,均由 WinJS 完备封装。那份 default.js 文件内就订阅了(或登记了)程序的加载事件,程序于是开启时便会执行:
// default.js
(function () {
'use strict';
// Uncomment the following line to enable first chanceexceptions.
// Debug.enableFirstChanceException(true);
WinJS.Application.onmainwindowactivated = function (e) {
if (e.detail.kind ===Windows.ApplicationModel.Activation.ActivationKind.launch) {
// TODO: 这里写启动代码
WinJS.Application.start();
})();首先你必须留意的一件事是,上述代码都是处在一个自动执行的匿名函数中去运行的。这个是一个避免污染全局空间的 JavaScript 实践方法,也是常常被人推荐的技巧。第二请留意 Debug 命名空间下调用的 enableFirstChanceException 方法。取消注释的话就会向VS的调试器报告初期的 JavaScript 异常,确实十分方便的说。
前期工作完毕后,由 WinJS 命名空间下得到的对象,此时此刻,代码就会订阅在程序及其资源(如default.html)都已经加载好了才会触发的事件。这是一个执行初始化绝佳的地方和时刻,待会我们会见到。对于触发任何程序事件,你一定要让程序晓得你已经准备好介绍消息了,也就是要执行方法是怎样。onmainwindowactivated 的事件处理器(event handler)就是我们接着将要下载陈先生博客的绝佳之地。
运用 WinJS.xhr&下载数据
WinJS 命名空间下 xhr 函数提供一系列的可选项,以备下载来自 HTTP 协议的数据,普通文本和 XML 的都可以。xhr 为 XMLHttpRequest 的意思。WinJS 里的 xhr 是一个包装器,可送入许多参数,包括 HTTP 动词(默认 GET)、HTTP 头(默认 none )和获取数据的源地址 URL。
WinJS.Application.onmainwindowactivated = function (e) {
if (e.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
// 开始下载
downloadStatus.innerText = &downloading posts...&;
WinJS.xhr({ url: &/b/oldnewthing/rss.aspx& }).
then(processPosts, downloadError);
与 XMLHttpRequest 对象可选择数据同步(synchronously)或异步(asynchronously)通讯的方式不同,WinJs.xhr()只能选择异步方式的通讯,其考量是为了防止同步通信而造成的UI阻塞。异步模式下编码模型,能够帮助你编写更灵敏响应的应用程序。该例子中,我们不知道请求花去多少时间,于是,我们安排一个 div 来作为反馈下载状态 downloadStatus 的 UI 容器。
WinJS 对象下的异步函数称作“允诺 promise”,表示将来发生的结果。Promise 对象暴露了then 函数,即 success 函数、failure 函数和 prgress 函数。调用 xhr() 立刻返回promise 对象,于是我们设定这三个函数的具体情形。
function processPosts(request) {
// 清空提示内容
downloadStatus.innerText = &&;
// 解析RSS
var items = request.responseXML.selectNodes(&//item&);
if( items.length == 0 ) { downloadStatus.innerText = &下载帖子出错。&; }
for( var i = 0, len = items. i & i++ ) {
var item = items[i];
// 向 #posts div 添加数据
var parent = document.createElement(&div&);
appendDiv(parent, item.selectNodes(&title&)[0].text, &postTitle&);
appendDiv(parent, item.selectNodes(&pubDate&)[0].text, &postDate&);
appendDiv(parent, item.selectNodes(&description&)[0].text, &postContent&);
posts.appendChild(parent);
function appendDiv(parent, html, className) {
var div = document.createElement(&div&);
div.innerHTML =
div.className = classN
parent.appendChild(div);
function downloadError() {
downloadStatus.innerText = &下载帖子出错。&;
}当调用 HTTP 请求完毕,我们接着执行 processPosts 函数,其参数请求对象(a request object)一如 XMLHttpRequest 的那样子,好比我们所关心的 responseXML 属性,这个就是我们所请求的结果,也就是 RSS 数据。RSS 本身也是一份标准的 XML 文档,于是我们可用XPath表达式选取 RSSfeed 里面的节点,提取每项条目的标题、pubDta 和内容等等,最后渲染到 div 元素中。对于既往的 “TheOld New Thing”
读者,看到程序输出的样子也会觉得是相似的。
有人会问,是否 xhr 函数会工作,因为 web 服务器的生产的页面可能会失败的。可以工作起来的原因在于使用 JavaScript Metro 式程序是运行在一个本地而且安全的上下文环境中,仅仅只能使用程序所列明的请求和用户所限定的功能。
你已经懂得 Metro App 怎么用 JS 编写的一点门径了,但是所接触到 API 只是 Win 类库中的一小部分。接下来将要预告的是,与您一道发现 Windows Runtime 和控件的奥秘!
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场坑爹的Windows8&MetroApp管理机制
Windows相比于OSX,总是给人以臃肿,不人性化的印象。这从Windows平台流行的各种系统优化软件(比如说3哔0)就可以看出来。虽然没拥有过Mac电脑(原因是因为穷),但是从阅读的网上的评测文章和朋友的实际反馈来看,OSX在这方面的确是要做得易用。
OSX没有注册表,应用文件也多被打包在一起,因此直接删除文件就可以删除应用,不像Windows把所有东西都显示出来。我觉得这两种处理方式大抵属于不同设计哲学,毕竟微软当年刚出windows时面向的用户主要还是偏Geek的群体,因此系统具有更多的开放性,文件管理也更自由。虽然这些开放性和拓展性后来成为导致病毒和一系列不按标准开发的软件残留文件的主要罪魁祸首。
当然微软肯定注意到这些问题对于用户的影响,也因此在新的系统中加入更多内容来修补以前的缺点,但是微软的一大毛病是他有时候做起事情来莫名其妙,在细节上做一些匪夷所思的处理。一个例子是从Vista开始引入的UAC机制,这个增强系统安全性的功能的默认设置成为了用户耐心挑战器,在被广泛诟病了很久后才在Win7中得到改善。
在触屏时代的今天,微软也终于推出了自家的融合桌面和平板的操作系统Windows8。个人对于这个系统还是比较满意的。在ssd状态下几乎只要五秒钟的启动速度,取代开始菜单而采用磁铁以及开始屏幕的设计,以及新引入的Win8应用商店都赋予这个系统相比于以前完全不同的面貌。
虽然Win8有很多优点,但是就像我上面说的,微软做起事情来总会有些莫名其妙,因此Win8也存在很坑爹的地方,今天我要说的就是Win8应用商店。
Win8下系统的软件分成两类:一类是Desktop
Program,这个和我们传统的软件一样,主要在桌面模式下运行,需要用户自己通过下载或者光盘的方式取得安装文件,并通过软件自带的卸载程序或者控制面板进行管理;另外一类就是Metro(Modern)
App,这个是新增加的软件类型,主要是为触屏模式下运行设计,用户主要通过应用商店进行下载和购买,可通过开始屏幕和应用商店进行卸载(类似安卓和苹果的应用)。
Win8应用商店其实就是微软看到苹果的应用商店火了之后照着做出来的功能。虽然现在软件少得可怜,谷歌和facebook还死活抵制微软坚决不在微软平台上开发应用,但是毕竟方便的软件分发渠道,也是个很有用的功能。我在win8商店下载了不少程序,很多都是试一试不喜欢然后就卸载掉,最后只留下了几款比较中意的。
随着系统的使用时间增加,我忽然发现我的C盘的空间几乎要不够用了,身为SSD党整个电脑的可用空间只有可怜的90G(我的上一个80G硬盘还是2004年的机器),C盘给了60G,结果三个月就红了。在网络上搜索各种文章并清理系统垃圾的过程我发现了Win8应用商店的处理机制对我等SSD党是多么的坑爹。
Win8应用商店在软件升级以及卸载的过程中,并不是对软件文件进行替换和删除而是:
(1)对许多App,特别是系统自带的软件,在升级过程中并不会删除旧版的文件,而是在安装新版软件的基础上保留旧版文件;
(2)App一旦被下载,就会在商店的Your
App列表里,就算卸载了也不会从这个列表消失,然后最坑爹的事情出现了,就算软件被卸载,其安装文件也会永远存在在你电脑里,方便你什么时候想起来想安装了,就不用再从应用商店下载直接可以本地安装了,加快了安装已卸载软件的速度。
这是多么人性化的设计啊!(╯‵□&)╯︵┻━┻!!!!
我想微软的设计师肯定认为随着科技的发展用户的硬盘已经达到了完全不用担心容量才做出这样英明的决定。这种设计考虑到了那种电脑里有数块1T硬盘却还在用56k猫上网的用户,充满着让人无法直视的人文关怀。
这时候你一定和我一样想,虽然有点麻烦,但是Win8应该有提供类似控制面板的模块让用户完全卸载吧?
太天真了。
这时候你一定又和我一样想,虽然会更麻烦,但是我找到文件夹直接删除也可以吧。
答案也是No,至少对大部分用户是如此。Metro App的数据大多存放在C:\Program
Files\WindowsApps文件夹下面,但是你哪怕用管理员账户点这个文件夹大部分情况下只会看见
类似这样的禁止访问的对话框。真是为用户安全细心考虑的公司啊= =b
实际上通过设置还是有办法访问这个文件夹的,但是进去后你会发现,很多软件的文件夹并不是以文件命保存,而是以一种奇怪的名字存起来的,比如:
“\504C9B691_1.1.0.15_neutral__mpwt9x1b9njee”
谁能告诉我这究竟是我的啥软件。瞎删也不行,如果误删除到正在使用的软件文件夹的话……你懂的。
搜索了半天,现在基本只有两种有效的方式达到删除残余App文件的方式(其实本质上一种):
1)通过Windows PowerShell,以命令行的模式用
Get-appxPackage 取得App列表,之后通过
Remove-appxPackage + 软件名称 就能彻底删除
界面看起来是这样的:
(2)利用Metro应用商店管理小工具进行清理
这个工具本质上还是利用PowerShell来处理App,增加了列表窗口和判断使得清理工作更智能化。
界面看起来是这样的:
这两种方法固然好,不过文件名乱码的问题也是回天乏力。
我通过Metro应用商店管理小工具对系统进行了自动清理,清理出了1.5G的空间,对我来说真的挺多的。
我这还是试用软件不多的情况…真不敢想象要是应用多一些是什么情况= =b。
最终卸载软件和清理升级文件这种事情,也得通过第三方软件才能达到我的要求。微软,真是让人如何说爱你。
预测:目测Win8系统优化又要养活一大波软件商。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。或者具体说是Metro的OneNote。是这样,我有台X200t升级到Win 10了,原来使用的是桌面版本的OneNote,现在想改成使用Metro版的OneNote。Tablet PC嘛,自然有物理的平板电脑按键,这几个按键可以设置成启动一个应用。原来我是把其中一个按键启动桌面版的OneNote,但我不知道要怎么用命令行启动Metro App,烦请赐教。---------------------------------------G+上的一位网友提出了一个曲线办法先把onenote钉在开始菜单,把他拖到桌面,给一个快捷键(我用了Ctrl+Shift+F12这么猎奇的应该没其他应用会用到吧),Tablet按钮也设置成按这个快捷键。
摘自 Automating the activation of your app使用下面的代码#include "stdafx.h"
#include &shlobj.h&
#include &stdio.h&
#include &shobjidl.h&
#include &objbase.h&
#include &atlbase.h&
#include &string&
Routine Description:
This routine launches your app using IApplicationActivationManager.
Arguments:
strAppUserModelID - AppUserModelID of the app to launch.
pdwProcessId - Output argument that receives the process id of the launched app.
Return value:
HRESULT indicating success/failure
HRESULT LaunchApp(const std::wstring& strAppUserModelId, PDWORD pdwProcessId)
CComPtr&IApplicationActivationManager& spAppActivationManager;
HRESULT hrResult = E_INVALIDARG;
if (!strAppUserModelId.empty())
// Instantiate IApplicationActivationManager
hrResult = CoCreateInstance(CLSID_ApplicationActivationManager,
CLSCTX_LOCAL_SERVER,
IID_IApplicationActivationManager,
(LPVOID*)&spAppActivationManager);
if (SUCCEEDED(hrResult))
// This call ensures that the app is launched as the foreground window
hrResult = CoAllowSetForegroundWindow(spAppActivationManager, NULL);
// Launch the app
if (SUCCEEDED(hrResult))
hrResult = spAppActivationManager-&ActivateApplication(strAppUserModelId.c_str(),
pdwProcessId);
return hrResult;
int _tmain(int argc, _TCHAR* argv[])
HRESULT hrResult = S_OK;
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
if (argc == 2)
DWORD dwProcessId = 0;
hrResult = LaunchApp(*argv, &dwProcessId);
hrResult = E_INVALIDARG;
CoUninitialize();
return hrResult;
这样使用这个程序(假设你将它生成为 Win8AppLaunch.exe 并置于 C:\ 中)C:\&Win8AppLaunch.exe Microsoft.BingNews_8wekyb3d8bbwe!AppexNews
要获得正确的命令行参数,你可以用这段 PowerShell 脚本$installedapps = get-AppxPackage
foreach ($app in $installedapps)
foreach ($id in (Get-AppxPackageManifest $app).package.applications.application.id)
$app.packagefamilyname + "!" + $id
更新一下,之前说的不严谨。如果不是在cmd下输命令运行,则应该是 cmd /c "start 包名"比如启动应用商店则是:cmd /c "start ms-windows-store:"
Windows 10 RTM实测可用。Win8应该也可以。参考:如何使用 dos 命令调用 win8 metro app?_百度知道
如何使用 dos 命令调用 win8 metro app?
如题!win8 metroapp link 这种答案就不用特意回复了。我只想知道怎么在桌面环境下利用简单的 命令 打开 win8 app。
有没有人知道呀?
我有更好的答案
只能在 开始屏幕中运行modern程序
其他类似问题
为您推荐:
您可能关注的推广
dos的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 mac 命令行打开 app 的文章

 

随机推荐