by Jamin (2 Submissions)
Category: Windows System Services
Compatability: Visual Basic 5.0
Difficulty: Beginner
Date Added: Wed 3rd February 2021
Rating: (3 Votes)
Let your program be listed in the right-mouse-click for a particular file type. You program can then be run with a simple click
Inputs
The filetype you want to add to. Your program's path & filename.
Assumes
This program only adds the regisrty key. It can be removed by running regedit then manually deleting the key. The location can be seen in the code.
Code Returns
Adds a registry key
Side Effects
Playing with the registry can be dangerous. I have run this on my computer and it works fine. I take no responsibility for any mishaps that occur.
API DeclarationsConst REG_SZ = 1
Const HKEY_LOCAL_MACHINE = &H80000002
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long
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 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
Public Sub SetStringValue(Hkey As Long, strPath As String, strValue As String, strdata As String)
Dim keyhand As Long
Dim i As Long
i = RegCreateKey(Hkey, strPath, keyhand)
'Changed the normal keyvalue name to vbNullString to set it as the (Default) value
i = RegSetValueEx(keyhand, vbNullString, 0, REG_SZ, ByVal strdata, Len(strdata))
i = RegCloseKey(keyhand)
End Sub
Private Sub Form_Load()
'Create Reg Key for filetype, (can be found by looking in HKEY_CLASSES_ROOT then the extension, the (Default) value pionts to the file type, located in the HKEY_CLASSES_ROOT folder)
'Replace """C:\Project1.exe"" %1" with your program path & name. "%1" means send the file name you click on as the commandline arguments.
SetStringValue HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\Paint.Picture\shell\Text To Display\command", 0, """C:\Project1.exe"" %1"
End Sub