Add items to the Windows Explorer right-click menu (Views: 30)
Problem/Question/Abstract: How do I add some items to Explorer's right-click menu, which appears when the user right-clicks on a certain file type? Answer: procedure add_context_menu; type extns = (wav, png, bmp, jpg); const ext_names: array[extns] of string = ('.wav', '.png', '.bmp', '.jpg'); var ext: extns; reg: TRegistry; name: string; command: string; begin reg := TRegistry.Create; reg.RootKey := HKEY_CLASSES_ROOT; {Build the command string we want to store} command := '"' + Application.ExeName + '" "%1"'; {Loop over extensions we can handle} for ext := wav to jpg do begin {See if this extension is already known in HKEY_CLASSES_ROOT} if reg.OpenKeyReadOnly('\' + ext_names[ext]) then begin name := reg.ReadString(''); {Get the name of this type} if name <> '' then {If not blank, open this type's shell key, but don't create it} if reg.OpenKey('\' + name + '\shell', False) then {Try to create a new key called "APTprocess". Note that for Delphi5 we need to set the access explicitly} reg.Access := KEY_READ or KEY_WRITE; if reg.OpenKey('APTprocess', True) then begin {The default value will be displayed in the context menu} reg.WriteString('', '&APT process'); {So now open the command key, creating it if required} reg.Access := KEY_READ or KEY_WRITE; if reg.OpenKey('command', True) then {and write the command string as the default value} reg.WriteString('', command); end; end; end; reg.Free; end; |