Help and Support

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

SAMPLE: 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,and AssocSupport)。 在应用程序还具有支持 DDE 执行的语句。 在 Execute 语句可以是任何格式 ; 至少,它应该是:

    <action> <filename> <options>

    以下 <action> 是任何指定操作,如 Open 或打印的唯一标识。 在 <filename> 是作为操作应对象的文件。 最后,<options> 可以是需要上传递的任何选项。

    典型的 Execute 语句遵循此格式:

    [<action> (<filename>)]

    是例如 Microsoft 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 中使用 Regedit 设置文件关联

注意 : Regedit 可用,只在 Windows NT 中,而不 Windows 3.1 版。

用户可以将还关联的文件与应用程序使用注册表编辑器。 在 编辑 菜单上选择 添加文件类型 修改文件类型 (修改现有的文件类型)。 将出现一个对话框类似于文件管理器相关的对话框。 如所述的文件管理器执行相同的步骤。 在 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 章、 外壳程序库或联机丛书。

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

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

文章翻译