文章编号: 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>)]

    渚嬪 Microsoft Word 使用:

    [Open("%1")] 应用程序已执行的语句对于支持必需的功能。
  2. 在 Windows NT 通过文件管理器或 regedit 中进行文件关联。

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

时将使用 文件管理器 的文件类型的关联,选择从 文件 菜单中的 关联。 关联对话框将显示现有文件关联的列表。 此对话框允许您添加一个新的文件类型 (或文件关联)、 修改现有文件类型或删除现有的文件类型。 新建文件类型 按钮允许用户添加新的文件扩展名的关联。 下面是该步骤:
  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 中可用。

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

使用程序集文件关联

您还可以以编程方式设置该关联。 设置您的应用程序在其他计算机上时,这是很有用。 您可以通过安装程序提供此功能。 第一个执行此操作的方法 (更简单的方法) 是使用 regedit 合并更改从一个文件。 此语法是:
   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 Shell 库或联机丛书。

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

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和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
 

文章翻译