Highlights
All Snippets
Top 100 Snippets
Librarians
gbCodeLib

By Language
VB6
JavaScript
Perl
HTML
SQL
Java
DOS

GBIC >> Source Code >> Visual Basic >> Snippet

Associate an extension with the app


Option Explicit

Private Const HKEY_CLASSES_ROOT = &H80000000

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 RegCloseKey Lib _
   "advapi32.dll" ( ByVal hKey As Long ) As Long

Private 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 Long

Private Const REG_SZ = 1



Public Function CreateFileAssociation(AppName As String , _
ByVal AppExtension As String , AppCommand As String ) As Boolean

    'Parameters:
    'AppName = name of application
    'AppExtension: = file extension

    'AppCommand = command line for application
    'Example:
    'CreateFileAssociation "Notepad", ".txt", "notepad.exe"

  Dim bAns As Boolean
  Dim sKeyName As String
  Dim sExtName As String
 AppExtension = Trim(AppExtension)
  If Left(AppExtension, 1) <> "." Then Exit Function
 sExtName = Mid (AppExtension, 2) & " File"
 
 bAns = WriteStringToRegistry(HKEY_CLASSES_ROOT, _
   AppExtension, "" , sExtName)
   
  If bAns Then bAns = WriteStringToRegistry(HKEY_CLASSES_ROOT, _
     sExtName & "\shell\open\command" , "" , AppCommand)
     
 CreateFileAssociation = bAns
End Function

Private Function WriteStringToRegistry(hKey As _
  Long , strPath As String , strValue As String , _
 strdata As String ) As Boolean


Dim bAns As Boolean

On Error Goto ErrorHandler
   Dim keyhand As Long
   Dim r As Long
  r = RegCreateKey(hKey, strPath, keyhand)
   If r = 0 Then
       r = RegSetValueEx(keyhand, strValue, 0, _
          REG_SZ, ByVal strdata, Len(strdata))
       r = RegCloseKey(keyhand)
    End If
   
  WriteStringToRegistry = (r = 0)

Exit Function

ErrorHandler:
   WriteStringToRegistry = False
    Exit Function
   
End Function