如何关联的Windows的应用与某一特定文件的类型,但分享,协会与其他应用程序?

StackOverflow https://stackoverflow.com/questions/1569102

如果我创建了一个新的应用程序,和联系,说的。xml文件的扩展在特定计算机上,当有人双击。xml文件,它将启动程序并通过该文件作为参数。但是,窗户似乎知道还有什么其他的文件有能力的工作类型的文件。怎么设置了?

此外,当我保存一个微软Word文件。xml文件,后来双击的文件,它将启动Microsoft Word,虽然.xml文件的类型是有关别的东西,例如互联网浏览器。似乎有可能是一个短相关联。xml文件类型当援引看的内容,并启动适当的程序。

是否有一个窗API,或某种标准的方式做到这一点吗?

什么我想要创造一个应用程序来做什么词是这样做--即保存文件。xml格式,但是当双击,发射我的应用程序,而不是因特网浏览器。

有帮助吗?

解决方案

机构的开办公室。xml文件

为Word文档保存在XML和具有.xml的扩展微软实施一个特殊的处理程序,开放这些文件在相应的应用程序(这种机制不仅仅用于文字文件,但也Excel电子表格、表单的形式和一些其他格式)。

如果你查询登记处,你会看到的文件类型文件中的一个。xml extension被设定为 xmlfile:

HKEY_CLASSES_ROOT\.xml (Default) = "xmlfile"

该命令时执行这一文件类型是打开的下指定的

HKEY_CLASSES_ROOT\xmlfile\shell\open\command = ""C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSOXMLED.EXE" /verb open "%1""

因此,当一个XML文件是双击在资源管理器、Windows将启动MSOXMLED.EXE.这个应用程序现在正在内部XML文件和搜索XML处理的指令。这种处理指令的命名的 mso应用程序 可以指定一进程id:

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

如果这种处理指令和程序id是一个支持的价值观MSOXMLED.EXE 搜索登记册开放的命令指定该进程id.对于 词。文档 那实际是另一个重定向到 词。Document12 (如果办公室于2007年安装)使用CurVer子的话。文档,所以我们结束:

HKEY_CLASSES_ROOT\Word.Document.12\shell\Open\command = ""C:\Program Files\Microsoft Office\Office12\WINWORD.EXE" /n /dde"

所以最后MSOXMLED.EXE 将启动适当的办公应用程序或启动的默认XML应用程序下指定的

HKEY_CLASSES_ROOT\XEV.GenericApp\shell\open\command

实际上你可以试试这个了通过调用MSOXMLED.EXE 从命令行:

MSOXMLED.EXE /verb OPEN "SampleWordMLDocument.xml"

如果你想实现同样的行为,你会来实现一个处理程序喜欢MSOXMLED.EXE 这看起来里面的文件对于预先定义的处理指示和随后将该文件为适当的应用程序。

图标处理

上述我们看的方式如何,文件的开放和编辑处理。另一个机构负责显示一个特定的图标取决于处理指令的内部XML文件:一个 图标的处理程序.

图标处理程序是一种类型的资源管理器的外壳扩展其是在进程COM对象,它可能相关的某些类型的文件。所使用XML文件中指定的注册下

HKEY_CLASSES_ROOT\xmlfile\ShellEx\IconHandler = "{AB968F1E-E20B-403A-9EB8-72EB0EB6797E}"

这GUID为参照的MSOXEV.dll 这将类似于MSOXMLEX.EXE 检查XML文件的进程id然后提供正确的图标。

作为这一切都是一个相当复杂的机构应仔细考虑如果你想要走这条路。在我看来,这是非常简单的注册一个新的独特文件的扩展。它也是有限的,因为它只会的工作文件类型,允许包括一些定制的信息的(作为该进程id)在标题的文件。

Microsoft不会使用这种方法了,并使用文件的扩展,而不是为他们的新心的格式(见 为什么办公室"。xml"的文件的行为不同于其他"。xml"的文件?).

其他提示

好了,所有的文件关联都存储在注册表中。有一篇文章“了解MS Windows文件关联的”,可以帮助。

除此之外,还有许多以编程方式创建文件关联。虽然通常这是在安装程序中完成的。例如,我最喜欢的安装系统NSIS有一个宏来处理这个问题: http://nsis.sourceforge.net/FileAssoc

不过,再有就是设置默认程序打开特定文件类型的挑战。我不知道用什么语言或安装你在使用要做到这一点规划系统,但似乎问题的回答这里NSIS 。当然微软也有他们的使用Windows安装这样的方式文档。但正如你可能已经猜到了,我更NSIS的家伙。 ;)

在Windows资源管理器点击工具 - >文件夹选项 - >文件类型。通过点击“新建”或“高级”,你可以创建/各种文件类型更改自己的应用程序关联,将出现当你右击该文件。

编辑:我不知道是否有重定向特定文件存根。你可以检查我的电脑\ HKEY_CLASSES_ROOT在注册表中,看看它都将在那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top