Results 1 to 3 of 3

Thread: anyone know of a file association utility?

  1. #1

    Thread Starter
    New Member
    Join Date
    Feb 1999
    Location
    Edmonton,AB, Canada
    Posts
    2

    Post

    I'm looking for a file association app that will allow a user to associate my app with a file type if they so desire. Something that I could include in the install and launch from my app.

  2. #2
    Addicted Member pardede's Avatar
    Join Date
    Jan 2000
    Posts
    232

    Post

    what i know is that associations are set in the registry, you could write code to register the association you want

  3. #3
    Addicted Member
    Join Date
    May 1999
    Location
    Californ-I- A
    Posts
    207

    Post

    From windows explorer, a user can click "View -> Option" and click the file types tab. Then assosiate via the "Edit" button.

    Or, hold shift key while right click on the file, choose "Open with.." and check "Always open with this program."

    Or, you can do it via code in your app as follows:

    This code was used in a project I wrote to view NFO type files. It's rather old ... I didn't know what I was doing at the time. But it can be easily optimized. I don't know where I had gotten the code ... I think from www.vbcode.com.

    This was all in a module. I created the assosiation from an options dialog witha command button that called createAssosiation


    Option Explicit

    Public Const REG_SZ As Long = 1
    Public Const REG_DWORD As Long = 4
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003

    Public Const ERROR_NONE = 0
    Public Const ERROR_BADDB = 1
    Public Const ERROR_BADKEY = 2
    Public Const ERROR_CANTOPEN = 3
    Public Const ERROR_CANTREAD = 4
    Public Const ERROR_CANTWRITE = 5
    Public Const ERROR_OUTOFMEMORY = 6
    Public Const ERROR_INVALID_PARAMETER = 7
    Public Const ERROR_ACCESS_DENIED = 8
    Public Const ERROR_INVALID_PARAMETERS = 87
    Public Const ERROR_NO_MORE_ITEMS = 259

    Public Const KEY_ALL_ACCESS = &H3F
    Public Const REG_OPTION_NON_VOLATILE = 0

    Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

    Public Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
    ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, _
    ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long

    Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, phkResult As Long) As Long

    Public Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" _
    (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
    ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long

    Public Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" _
    (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
    ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long


    Public Sub CreateAssociation()

    Dim sPath As String

    'File Associations begin with a listing
    'of the default extension under HKEY_CLASSES_ROOT.
    'So the first step is to create that
    'root extension item
    CreateNewKey ".NFO", HKEY_CLASSES_ROOT


    'To the extension just added, add a
    'subitem where the registry will look for
    'commands relating to the .xxx extension
    '("MyApp.Document"). Its type is String (REG_SZ)
    SetKeyValue ".NFO", "", "NFOView.Document", REG_SZ


    'Create the 'MyApp.Document' item under
    'HKEY_CLASSES_ROOT. This is where you'll put
    'the command line to execute or other shell
    'statements necessary.
    CreateNewKey "NFOView.Document\shell\open\command", HKEY_CLASSES_ROOT


    'Set its default item to "MyApp Document".
    'This is what is displayed in Explorer against
    'for files with a xxx extension. Its type is
    'String (REG_SZ)
    SetKeyValue "NFOView.Document", "", "NFO Viewer", REG_SZ


    'Finally, add the path to myapp.exe
    'Remember to add %1 as the final command
    'parameter to assure the app opens the passed
    'command line item.
    '(results in '"c:\LongPathname\Myapp.exe %1")
    'Again, its type is string.
    sPath = App.Path + "\NFOView.exe %1"
    SetKeyValue "NFOView.Document\shell\open\command", "", sPath, REG_SZ

    'All done

    End Sub


    Public Function SetValueEx(ByVal hKey As Long, _
    sValueName As String, _
    lType As Long, _
    vValue As Variant) As Long

    Dim nValue As Long
    Dim sValue As String

    Select Case lType
    Case REG_SZ
    sValue = vValue & Chr$(0)
    SetValueEx = RegSetValueExString(hKey, _
    sValueName, _
    0&, _
    lType, _
    sValue, _
    Len(sValue))

    Case REG_DWORD
    nValue = vValue
    SetValueEx = RegSetValueExLong(hKey, _
    sValueName, _
    0&, _
    lType, _
    nValue, _
    4)

    End Select

    End Function


    Public Sub CreateNewKey(sNewKeyName As String, _
    lPredefinedKey As Long)

    'handle to the new key
    Dim hKey As Long

    'result of the RegCreateKeyEx function
    Dim r As Long

    r = RegCreateKeyEx(lPredefinedKey, _
    sNewKeyName, 0&, _
    vbNullString, _
    REG_OPTION_NON_VOLATILE, _
    KEY_ALL_ACCESS, 0&, hKey, r)

    Call RegCloseKey(hKey)

    End Sub


    Public Sub SetKeyValue(sKeyName As String, _
    sValueName As String, _
    vValueSetting As Variant, _
    lValueType As Long)

    'result of the SetValueEx function
    Dim r As Long

    'handle of opened key
    Dim hKey As Long

    'open the specified key
    r = RegOpenKeyEx(HKEY_CLASSES_ROOT, _
    sKeyName, 0, _
    KEY_ALL_ACCESS, hKey)

    r = SetValueEx(hKey, _
    sValueName, _
    lValueType, _
    vValueSetting)

    Call RegCloseKey(hKey)

    End Sub



    ------------------
    Micah Carrick
    http://micah.carrick.com
    [email protected]
    ICQ: 53480225


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width