如何使你的程序同文件扩展名建立关联?

  • 来源: 互联网 作者: rocket   2008-03-18/09:33
  • 如果你的程序是同文件操作有关,比如说你自定义了一个文件类型,用你的程序才能打开它并查看其中的内容。你有没有想过在你的文件同你的程序之间建立关联,这样不必每次都要先启动程序,再打开文件了。用户可直接点选你的文件,而不必每次都要面对一个“打开方式”对话框。其实要做到这一点,只须调用API函数就行了。下面的代码向你演示如何实现这一功能。


    首先在窗体的通用声明段中加入下面的代码:


          Option Explicit

          Private Declare Function RegCreateKey Lib "advapi32.dll" Alias  "RegCreateKeyA" (ByVal hKey As Long, _
                            ByVal lpSubKey As String,  phkResult As Long) As Long
          Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, _
                     ByVal lpSubKey As String,  ByVal dwType As Long,  ByVal lpData As String,  ByVal cbData As Long) As Long

          ' Return codes from Registration functions.
          Const ERROR_SUCCESS = 0&
          Const ERROR_BADDB = 1&
          Const ERROR_BADKEY = 2&
          Const ERROR_CANTOPEN = 3&
          Const ERROR_CANTREAD = 4&
          Const ERROR_CANTWRITE = 5&
          Const ERROR_OUTOFMEMORY = 6&
          Const ERROR_INVALID_PARAMETER = 7&
          Const ERROR_ACCESS_DENIED = 8&

          Private Const HKEY_CLASSES_ROOT = &H80000000
          Private Const MAX_PATH = 260&
          Private Const REG_SZ = 1

    在窗体的Click事件中加入下面的代码
          Private Sub Form_Click()

              Dim sKeyName As String   'Holds Key Name in registry.
              Dim sKeyValue As String  'Holds Key Value in registry.
              Dim ret&           'Holds error status if any from API calls.
              Dim lphKey&        'Holds created key handle from RegCreateKey.

          'This creates a Root entry called "MyApp".
              sKeyName = "MyApp"
              sKeyValue = "My Application"
              ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
              ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

          'This creates a Root entry called .BAR associated with "MyApp".
              sKeyName = ".BAR"
              sKeyValue = "MyApp"
              ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
              ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

          'This sets the command line for "MyApp".
              sKeyName = "MyApp"
              sKeyValue = "c:\mydir\my.exe %1"
              ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
              ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, _
                                  sKeyValue, MAX_PATH)
          End Sub           
    按F5运行程序并在窗体上点击一下鼠标,然后退出程序.


    从开始菜单中运行REGEDIT,你可在HKEY_CLASSES_ROOT下找到.bar和MyApp两个子项,结构如下所示:

          .bar = MyApp
          MyApp = My Application
            |
             -- Shell
                  |
                   -- open
                        |
                         -- command = c:\mydir\my.exe %1


    你可以查看关于RegCreateKey和RegSetValue的用法说明。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多