用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心编程技巧VisualBasic

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

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 19:51:32

如果你的程序是同文件操作有关,比如说你自定义了一个文件类型,用你的程序才能打开它并查看其中的内容。你有没有想过在你的文件同你的程序之间建立关联,这样不必每次都要先启动程序,再打开文件了。用户可直接点选你的文件,而不必每次都要面对一个“打开方式”对话框。其实要做到这一点,只须调用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的用法说明。

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:18,968.75000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号