I was looking for a way to add my program into Windows Explorer right-click context. So I googled it, and I think I found what I was looking for.
As usual, StackOverflow delivers the best clue. I found this discussion that gave me the starting point.
So the idea here is to use Windows’ registry. Apparently there’s a location where we can register/unregister the context menu.
Thanks polyglot & StackOverflow!
These are the required assemblies to interop with Windows.
using System; using Microsoft.Win32;
The functions to register/unregister the context menu :
string contextName = "contextTest";
public bool Register()
{
//Open HKEY_CLASSES_ROOT, Key *, last param is to make it writable
RegistryKey reg = Registry.ClassesRoot.OpenSubKey("*", true);
if (reg != null)
{
RegistryKey shell = reg.OpenSubKey("shell", true);
if (shell != null)
{
//Get Current Assembly fullname
string appLocation = System.Reflection.Assembly.GetExecutingAssembly().Location;
RegistryKey ctx = shell.OpenSubKey(contextName);
if (ctx != null)
return true;
else
ctx = shell.CreateSubKey(contextName);
ctx.SetValue("","Context It");
RegistryKey cmd = ctx.CreateSubKey("command");
cmd.SetValue("", """ + appLocation +"" "%L"");
return true;
}
}
return false;
}
public bool Unregister()
{
RegistryKey reg = Registry.ClassesRoot.OpenSubKey("*", true);
if (reg != null)
{
RegistryKey shell = reg.OpenSubKey("shell", true);
if (shell != null)
{
shell.DeleteSubKeyTree(contextName);
return true;
}
}
return false;
}





Change the chart properties.
