哈里在设计自己的NOTE2.0的途中,想加入一个点击文件就可以打开自己程序的代码,即文件关联!
在网上搜索了许多前辈们智慧的结晶后,哈里将其做成了一个模块文件,模块代码如下:
Private Const REG_SZ = 1 ' Unicode nul terminated string
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (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
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Function 注册表注册(ByVal 注册表目录名 As String, ByVal 扩展名 As String) As Long
On Error GoTo ErrHandler
If RegOpenKey(HKEY_CLASSES_ROOT, 注册表目录名, hKey) <> 0 Then
RegSetValue HKEY_CLASSES_ROOT, 扩展名, REG_SZ, 注册表目录名, 7
RegSetValue HKEY_CLASSES_ROOT, 注册表目录名 & "\DefaultIcon", REG_SZ, App.Path & "\" & App.EXEName & ".exe,0", 24
RegSetValue HKEY_CLASSES_ROOT, 注册表目录名 & "\Shell", REG_SZ, "open", 4
RegSetValue HKEY_CLASSES_ROOT, 注册表目录名 & "\Shell\open\Command", REG_SZ, App.Path & "\" & App.EXEName & ".exe ""%1""", 22
注册表注册 = 1
Else
注册表注册 = 2
End If
Exit Function
ErrHandler:
注册表注册 = 0
End Function
将模块建立好之后,这个函数要怎么用呢?
函数的语法是:
注册表注册(文件类型名, 后缀)
返回一个数字(0:权限不足或其他错误,注册失败。1:注册成功。2:已注册。)
其中文件类型名可以随便取,但最好是纯英文字母组合,需要加双引号申明其本身是字符串!
后缀以关联TXT文件为例应为:".txt" 【需要加双引号!】
加上Select语句形成一个完整的函数应用方式(以关联TXT文件为例):
Select Case 注册表注册("TXTFlie", ".txt")
Case 0
MsgBox "软件注册失败!请用管理员身份运行!"
Case 1
MsgBox "注册成功!"
End Select
Case 2 可以接应用程序已经注册过之后的代码,这里就略过了。
整个函数对注册表主要进行了三项操作:
1、添加文件后缀及表内目录指向。
2、指向目录的创建:
1)文件图标指向。
2)应用程序指向。
以上就是全部了。: )