加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何将Windows应用程序与特定文件类型相关联,但与其他应用程序共

发布时间:2020-12-13 20:19:37 所属栏目:Windows 来源:网络整理
导读:如果我创建一个新的应用程序,并且与特定计算机上的.xml文件扩展名相关联,当有人双击.xml文件时,它将启动我的应用程序并将该文件作为参数传递.但Windows似乎知道其他文件有能力处理该文件类型.怎么设置? 此外,当我将Microsoft Word文件保存为.xml文件时,然后
如果我创建一个新的应用程序,并且与特定计算机上的.xml文件扩展名相关联,当有人双击.xml文件时,它将启动我的应用程序并将该文件作为参数传递.但Windows似乎知道其他文件有能力处理该文件类型.怎么设置?

此外,当我将Microsoft Word文件保存为.xml文件时,然后双击该文件,即使.xml文件类型与其他内容(例如Internet Explorer)相关联,它也将启动Microsoft Word.似乎可能有一个与.xml文件类型相关联的存根,当被调用时会查看内容并启动相应的应用程序.

有没有Windows API,还是某种标准的方法呢?

我想要创建一个应用程序来完成Word正在做的工作 – 即以.xml格式保存文件,但是当双击时,启动我的应用程序而不是Internet Explorer.

打开Office .xml文档的机制

对于以XML格式保存并具有.xml扩展名的Word文档,Microsoft实现了一个特殊的处理程序来在相应的应用程序中打开这些文件(此机制不仅用于Word文档,还包括Excel电子表格,InfoPath表单和其他格式).

如果您检查注册表,您将看到扩展名为.xml的文件的文件类型设置为xmlfile:

HKEY_CLASSES_ROOT.xml (Default) = "xmlfile"

此文件类型打开时执行的命令在下面指定

HKEY_CLASSES_ROOTxmlfileshellopencommand = ""C:Program FilesCommon FilesMicrosoft SharedOFFICE12MSOXMLED.EXE" /verb open "%1""

所以当在资源管理器中双击一个XML文件时,Windows将启动MSOXMLED.EXE.该应用程序现在正在查看XML文件并搜索XML处理指令.这个名为mso-application的处理指令可以指定一个ProgId:

<?mso-application progid="Word.Document"?>

如果找到此处理指令,并且ProgId是支持的值之一,MSOXMLED.EXE将在该注册表中搜索为该ProgId指定的打开命令.对于Word.Document,实际上是使用Word.Document的CurVer子项的另一个重定向到Word.Document12(如果安装了Office 2007),那么我们最终得到:

HKEY_CLASSES_ROOTWord.Document.12shellOpencommand = ""C:Program FilesMicrosoft OfficeOffice12WINWORD.EXE" /n /dde"

所以最后,MSOXMLED.EXE将启动相应的Office应用程序或启动下面指定的默认XML应用程序

HKEY_CLASSES_ROOTXEV.GenericAppshellopencommand

您可以通过从命令行调用MSOXMLED.EXE来实际尝试:

MSOXMLED.EXE /verb OPEN "SampleWordMLDocument.xml"

如果您想实现相同的行为,您将必须实现一个处理程序,如MSOXMLED.EXE,该文件在文件内部查看预定义的处理指令,然后将文档路由到相应的应用程序.

图标处理

上面我们来看看如何处理文档打开和编辑.根据XML文档中的处理指令,另一种机制负责显示一个特定的图标:一个icon handler.

图标处理程序是一种Explorer Shell扩展,它们是可与某些文件类型相关联的进程内COM对象.用于XML文件的文件在注册表中指定

HKEY_CLASSES_ROOTxmlfileShellExIconHandler = "{AB968F1E-E20B-403A-9EB8-72EB0EB6797E}"

这个GUID是指MSOXEV.dll,它将类似于MSOXMLEX.EXE检查ProgId的XML文件,然后提供正确的图标.

由于所有这些都是一个相当复杂的机制,您应该仔细考虑,如果你想这样做.在我看来,注册新的唯一文件扩展名要简单得多.它也受到限制,因为它只适用于允许您在文件标题中包含某些自定义信息(如ProgId)的文件类型.

Microsoft不再使用此方法,而是使用文件扩展名替换新的OpenXML格式(参见Why do Office “.xml” files behave differently from other “.xml” files?).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读