locked
FAQs: 如何给应用程序关联一个文件扩展名? RRS feed

  • 问题

  • 为了帮助大家更好地学习 Visual Basic技术,微软论坛技术支持团队编辑了一些列的 "Visual Basic 常见问题及解答" 精华帖。

    本帖的主题是:如何给应用程序关联一个文件扩展名?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "Visual Basic 常见问题及解答",请打开索引页面:
    http://social.msdn.microsoft.com/Forums/zh-CN/vbasiczhchs/thread/c9ab4b8e-99dc-49a2-bcea-30f3ecc3c3b7


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月2日 12:03

答案

  • 所有文件的类型-应用关联都存储在注册表。要创建一个与你的应用程序关联的文件扩展名,你需要写入一个注册表键值来注册它。

     

    例如:创建一个叫做“.Hello的文件扩展名

    My.Computer.Registry.ClassesRoot.CreateSubKey(".Hello").SetValue("", _

              "Hello", Microsoft.Win32.RegistryValueKind.String)    

    My.Computer.Registry.ClassesRoot.CreateSubKey("Hello\shell\open\command").SetValue("", _

              Application.ExecutablePath & " ""%l"" ", Microsoft.Win32.RegistryValueKind.String)

     


    对以上代码示例的解释:

    Code

    What it does

    CreateSubKey(".Hello")

    ClassRoot下为.Hello扩展名创建一个注册表键值。注意必须包含开始的句点。

    .SetValue("", "Hello"...

    1. "" (或者空值) 设定了键值的默认值。

    2. "Hello"就像我们最初见到的"文本文件";它告诉我们哪一个注册表键值包含了有关.Hello扩展名的信息。

    CreateSubKey("Hello" & _ "\shell\open\command")

    这一句创建了"Hello"子键和用来存储能够打开这种文件类型的应用程序的路径的"store\open\command" 子键。

    .SetValue("", Application.ExecutablePath & _ " ""%l"" ",...

    1. ""再一次告诉应用程序要将键值的默认值设定成什么。

    2. Application.ExecutablePath让代码将当前运行的可执行程序和这个文件类型关联起来。

    3. " ""%1"" "将打开文件的位置传给你的程序。它周围的双引号是可选的,但如果你的参数超过一个,则每个参数周围的双引号必不可少。

     

    详细演练和示例项目如下:
    http://www.codeproject.com/useritems/VBFileAssociation.asp
    另外,你可以通过Windows Explorer手动创建文件扩展名:

    工具 -> 文件夹选项 -> 文件类型 -> 指定文件扩展名和关联的文件类型来创建新扩展名。
     
    相关帖子:
    http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/4d8760c9-b2c9-4016-b75e-1b3189b0c30b/


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月2日 12:04