在注冊表中設置文件關聯即可。 如在注冊表中設置.ttv文件用a.exe打開。即可。參考vb代碼如下。 注冊新文件類型<一> Private Declare Function SHFileExists Lib "shell32" Alias "#45" (ByVal szPath As String) As LongPublic Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As _ Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey _ As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, _ lpData As Any, ByVal cbData As Long) As LongPublic Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As _ Long, ByVal lpSubKey As String) As Long Public 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 Declare Function RegCloseKey& Lib "advapi32.dll" (ByVal hKey&)Public Const HKEY_CLASSES_ROOT = &H80000000 Public Function FileTypeRegister(SpreadName As String, CommandLine As String, Optional Description As String = "user-defined") Select Case Left(SpreadName, 1) Case "." If Len(SpreadName) <> 4 Then Exit Function Case Else If Len(SpreadName) = 3 Then Spreaname = "." & SpreadName Else Exit Function End Select If FileExist(CommandLine) = False Then Exit Function
Rv = RegCreateKey(HKEY_CLASSES_ROOT, SpreadName, hKey) If Rv = 0 Then RegSetValueEx hKey, vbNullString, O&, 1, ByVal subKey, Len(subKey) RegCloseKey hKey End If 'Register Description Rv = RegCreateKey(HKEY_CLASSES_ROOT, subKey, hKey) If Rv = 0 Then RegSetValueEx hKey, vbNullString, 0&, 1, ByVal Description, Len(Description) RegCloseKey hKey End If
'Deuault Icon Rv = RegCreateKey(HKEY_CLASSES_ROOT, subKey & "\DefaultIcon", hKey) If Rv = 0 Then Ico = CommandLine & ",1" RegSetValueEx hKey, vbNullString, 0, 1, ByVal Ico, Len(Ico) RegCloseKey hKey End If
'Default CommandLine Rv = RegCreateKey(HKEY_CLASSES_ROOT, subKey & "\Shell\Open\Command", hKey) If Rv = 0 Then CommandLine = CommandLine & " %1" RegSetValueEx hKey, vbNullString, 0, 1, ByVal CommandLine, Len(CommandLine) RegCloseKey hKey End If
End FunctionPublic Function FileExist(ByVal CommandLine As String) As Boolean If Str$(SHFileExists(CommandLine)) = 0 Then FileExist = False Else If (GetAttr(CommandLine) And vbDirectory) = vbDirectory Then FileExist = False Else FileExist = True End If End If End FunctionPublic Function UNFileTypeRegister(SpreadName As String) Select Case Left(SpreadName, 1) Case "." If Len(SpreadName) <> 4 Then Exit Function Case Else If Len(SpreadName) = 3 Then Spreaname = "." & SpreadName Else Exit Function End Select
Dim KeyIdA As Long, KeyIdB As Long, KeyValue As String
如在注冊表中設置.ttv文件用a.exe打開。即可。參考vb代碼如下。
注冊新文件類型<一>
Private Declare Function SHFileExists Lib "shell32" Alias "#45" (ByVal szPath As String) As LongPublic Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As _
Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey _
As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, _
lpData As Any, ByVal cbData As Long) As LongPublic Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As _
Long, ByVal lpSubKey As String) As Long
Public 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 Declare Function RegCloseKey& Lib "advapi32.dll" (ByVal hKey&)Public Const HKEY_CLASSES_ROOT = &H80000000
Public Function FileTypeRegister(SpreadName As String, CommandLine As String, Optional Description As String = "user-defined")
Select Case Left(SpreadName, 1)
Case "."
If Len(SpreadName) <> 4 Then Exit Function
Case Else
If Len(SpreadName) = 3 Then Spreaname = "." & SpreadName Else Exit Function
End Select
If FileExist(CommandLine) = False Then Exit Function
Dim hKey&, Rv&, subKey As String, Ico As String
'Register SpreadName
subKey = Right(SpreadName, 3) & "_Auto_File"
Rv = RegCreateKey(HKEY_CLASSES_ROOT, SpreadName, hKey)
If Rv = 0 Then
RegSetValueEx hKey, vbNullString, O&, 1, ByVal subKey, Len(subKey)
RegCloseKey hKey
End If 'Register Description
Rv = RegCreateKey(HKEY_CLASSES_ROOT, subKey, hKey)
If Rv = 0 Then
RegSetValueEx hKey, vbNullString, 0&, 1, ByVal Description, Len(Description)
RegCloseKey hKey
End If
'Deuault Icon
Rv = RegCreateKey(HKEY_CLASSES_ROOT, subKey & "\DefaultIcon", hKey)
If Rv = 0 Then
Ico = CommandLine & ",1"
RegSetValueEx hKey, vbNullString, 0, 1, ByVal Ico, Len(Ico)
RegCloseKey hKey
End If
'Default CommandLine
Rv = RegCreateKey(HKEY_CLASSES_ROOT, subKey & "\Shell\Open\Command", hKey)
If Rv = 0 Then
CommandLine = CommandLine & " %1"
RegSetValueEx hKey, vbNullString, 0, 1, ByVal CommandLine, Len(CommandLine)
RegCloseKey hKey
End If
End FunctionPublic Function FileExist(ByVal CommandLine As String) As Boolean
If Str$(SHFileExists(CommandLine)) = 0 Then
FileExist = False
Else
If (GetAttr(CommandLine) And vbDirectory) = vbDirectory Then
FileExist = False
Else
FileExist = True
End If
End If
End FunctionPublic Function UNFileTypeRegister(SpreadName As String)
Select Case Left(SpreadName, 1)
Case "."
If Len(SpreadName) <> 4 Then Exit Function
Case Else
If Len(SpreadName) = 3 Then Spreaname = "." & SpreadName Else Exit Function
End Select
Dim KeyIdA As Long, KeyIdB As Long, KeyValue As String
Call RegCreateKey(HKEY_CLASSES_ROOT, SpreadName, KeyIdA)
Call RegQueryValueEx(KeyIdA, vbNullString, 0&, 1, 0&, Bufsize)
KeyValue = String(Bufsize + 1, " ")
Call RegQueryValueEx(KeyIdA, vbNullString, 0&, 1, ByVal KeyValue, Bufsize)
KeyValue = Left$(KeyValue, Bufsize - 1)
Call RegCreateKey(HKEY_CLASSES_ROOT, "aaa_Auto_File", KeyIdB)
RegDeleteKey KeyIdB, ""
RegDeleteKey KeyIdA, ""
End FunctionSub test()
FileTypeRegister ".lir", "c:\windows\Notepad.exe"
End Sub