文章编号: 122787 - 最后修改: 2005年7月11日 - 修订: 2.4

示例: FileAsso.exe 演示如何使用文件关联

系统提示此文章适用于与您所使用的操作系统不同的操作系统。文章内容可能与您无关,并且已被禁用。

本页

展开全部 | 关闭全部

概要

Windows 提供了文件关联,以便应用程序可以注册它支持的文档的类型。这是有好处的因为它允许用户双击或选择要对其进行编辑或打印在文件管理器的文档。ShellExecute() API 还支持文件关联。 文件关联还允许用户与应用程序通过文件管理器的单个实例中打开多个文档。

ShellExecute() 在 Windows 95 中有更多好处。

更多信息

以下文件是可从 Microsoft 下载中心下载:
FileAsso.exe (http://download.microsoft.com/download/platformsdk/sample19/1/w9xnt4/en-us/fileasso.exe)
有关如何下载 Microsoft 支持文件的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591? (http://support.microsoft.com/kb/119591/EN-US/ ) 如何从联机服务获得 Microsoft 支持文件
Microsoft 扫描此文件的病毒。Microsoft 使用该文件已过帐的日期上获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器,这有助于防止未经授权的情况下对其进行更改文件上。 以下信息适用于 文件打开文件打印。以便于阅读本文讨论了打开文件以解释文件关联的工作方式。

当用户双击文档时,文件管理器将调用 ShellExecute() 为文件名。ShellExecute() 检查注册数据库,将该文件扩展名与特定的应用程序相关联的条目。如果项存在并且未指定 DDE 命令,然后 ShellExecute() 启动在指定的应用程序在注册表中。如果注册表指定要使用的 DDE 命令,ShellExecute() 尝试建立与该应用程序使用应用程序主题的 DDE 对话。如果应用程序响应 DDE 连接,ShellExecute() 在注册表中指定发送一个执行 DDE 命令。最多到应用程序中以定义在此对话中的具体情况是特别服务和 $ 主题名称连接到,和正确的 DDE 执行要使用的命令语法。但是,如果试图建立该对话失败,ShellExecute() 启动应用程序在注册表中指定,并尝试建立 DDE 重新连接。

没有可用的一个更多选项,当应用程序未运行时,这似乎是适当的文件。在此选项 ShellExecute() 发送一个不同的 Execute 语句中,应用程序需要打开并打印文档。完成该打印后退出。

有两个应用程序可以打开通过文件关联的单个应用程序实例的多个文档的步骤。作为一个的示例假定 MyApp 是应用程序,AssocSupport 是主题。大多数应用程序使用为其应用程序名称和系统的 MyApp 作为主题。
  1. 应用程序启动时,注册一个 DDE 服务器应用程序的名称和主题 (例如 MyApp,和 AssocSupport)。 应用程序还必须支持 DDE 执行语句。执行语句可以是任何格式 ; 最少,它应该是:

    <action><filename><options>

    在此处 <action>是任何指定唯一的标识,该操作如打开或打印的内容。在 <filename>是操作上的文件。最后,<options>可以传递需要的任何选项。

    典型的执行语句如下所示这种格式:

    [<action>(<filename>)]

    例如对于 Word 使用:

    [Open("%1")] 应用程序必须执行的语句的支持所需的功能。
  2. 在 Windows NT 通过文件管理器或 $ 注册表编辑器中进行文件关联。

使用文件管理器设置文件关联

时将使用 文件管理器 的文件类型相关联,选择从 文件 菜单中的 关联。关联对话框会显示现有文件关联的列表。此对话框允许您添加一个新的文件类型 (或文件关联)、 修改现有的文件类型或删除现有的文件类型。新建文件类型 按钮允许用户添加为新的文件扩展名的关联。下面是该步骤:
  1. 添加 文件类型 名称。例如对于其命名为"Microsoft Word 6.0 文档"
  2. 选择一项操作 (打开或打印)。例如对于选择 使用 DDE 复选框。
  3. 添加目录路径和应用程序名称。例如对于输入 WINWORD 与应用程序。
  4. 选择 使用 DDE 选项。
  5. 将应用程序设置作为 DDE 服务器名。
  6. 设置该主题为 DDE 服务器。例如对于输入 系统 作为标题。
  7. 将 DDE 消息 <action><filename><options>到您的应用程序的执行语句相同设置。但是在 <filename>和 <options>应将替换为任何命令行参数。例如使用:

    DDE 消息: [FileOpen("%1")]

在 Windows NT 使用注册表编辑器,设置文件关联

: 是仅在 Windows NT 中,不在 Windows 3.1 版注册表编辑器。

用户也可以将相关联的文件与应用程序通过使用注册表编辑器。 从 编辑 菜单中选择 添加文件类型修改文件类型 (若要修改现有的文件类型)。此时将显示一个对话框类似于文件管理器关联的对话框。用于文件管理器所述,请按照相同的步骤。在 Windows 3.1,版定义文件类型是通过此方法后转到文件管理器将关联的对话框,并将文件类型附加到该扩展。

使用程序集文件关联

您还可以以编程方式设置关联。设置您的应用程序在其他计算机上时,这是很有用。您可以通过安装程序提供此功能。要这样做第一种方法 (更简单的方法) 是使用注册表编辑器合并文件中所做的更改。 为此语法是:
   regedit <filename>.reg
				
<filename>.reg 的示例是:
   REGEDIT
   HKEY_CLASSES_ROOT\.riy = FMA000_File_assoc 
   HKEY_CLASSES_ROOT\FMA000_File_assoc = File_assoc 
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\command = fileasso.EXE 
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec = [Open(%1)]
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\application
         = Myserver
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\topic = system
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\command = fileasso.EXE
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec = [Open(%1)]
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\application 
         = MYServer
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\topic = System
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\ifexec =
   [Test(%1)]
				
在程序中,您还可以添加键注册表使用注册表 api。开发人员需要注册数据库中添加以下项:
   // Your extensions.
   HKEY_CLASSES_ROOT\.riy = FMA000_File_assoc

   //File type name.
   HKEY_CLASSES_ROOT\FMA000_File_assoc = File_assoc

   // Command to execute when application is not running or dde is not
   // present and Open command is issued.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\command = fileasso.EXE

   // DDE execute statement for Open.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec = [Open(%1)]

   // The server name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\application =
   Myserver

   // Topic name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\open\ddeexec\topic = system

   // Command to execute when application is not running or dde is not
   // present and print command is issued.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\command = fileasso.EXE

   // DDE execute statement for Print.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec = [Open(%1)]

   // The server name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File_assoc\shell\print\ddeexec\application =
   MYServer

   // Topic name your application responds to.
   HKEY_CLASSES_ROOT\FMA000_File assoc\shell\print\ddeexec\topic = System

   // DDE execute statement for print if the application is not already
   // running. This gives the options for a an application to Run, Print
   // and Exit.
   HKEY_CLASSES_ROOT\FMA000_File assoc\shell\print\ddeexec\ifexec =
   [Test(%1)]
				

参考

Windows SDK 程序员参考,第 1 章 7 外壳程序库或联机丛书。

窗口 3.1 SDK 帮助文件,注册数据库外壳库函数。

Win32 程序员参考,第 2 章 52 注册表和初始化文件或联机丛书。

Win32 SDK 帮助文件注册和初始化

文件管理器帮助文件。

REGEDIT.HLP

REGEDT32.HLP

这篇文章中的信息适用于:
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Windows 软件开发工具包 3.1
关键字:?
kbmt kbdownload kbfile kbinfo kbsample KB122787 KbMtzh
机器翻译机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 122787? (http://support.microsoft.com/kb/122787/en-us/ )
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。