VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 如何使你的程序同文件扩展名建立关联?
发表评论(0)作者:, 平台:, 阅读:10723, 日期:2000-03-12
如何使你的程序同文件扩展名建立关联?



如果你的程序是同文件操作有关,比如说你自定义了一个文件类型,用你的程序才

能打开它并查看其中的内容。你有没有想过在你的文件同你的程序之间建立关联,

这样不必每次都要先启动程序,再打开文件了。用户可直接点选你的文件,而不必

每次都要面对一个“打开方式”对话框。其实要做到这一点,只须调用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