[DllImport("shell32.dll")]
static extern void SHChangeNotify(HChangeNotifyEventID wEventId,
HChangeNotifyFlags uFlags,
IntPtr dwItem1,
IntPtr dwItem2);
enum HChangeNotifyEventID
enum HChangeNotifyFlags
None.
Please add some!
private void CheckFileAssociation(string ExePath, string FileExt, string Description, string Icon, string ActionName, string FileCommand, string DDECommandString, string App, string Topic)
{
RegistryKey RegKey = Registry.ClassesRoot.CreateSubKey("." + FileExt);
RegKey.SetValue("", FileExt + "File");
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + "File");
RegKey.SetValue("", Description);
RegKey.SetValue("EditFlags", 0);
RegKey.SetValue("BrowserFlags", 8);
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\DefaultIcon");
RegKey.SetValue("", Icon, RegistryValueKind.ExpandString);
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\shell");
RegKey.SetValue("", FileCommand);
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\shell\" + FileCommand);
RegKey.SetValue("", ActionName);
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\shell\" + FileCommand + @"\command");
RegKey.SetValue("", "\"" + ExePath + "\"");
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\shell\" + FileCommand + @"\ddeexec");
RegKey.SetValue("", DDECommandString);
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\shell\" + FileCommand + @"\ddeexec\Application");
RegKey.SetValue("", App);
RegKey = Registry.ClassesRoot.CreateSubKey(FileExt + @"File\shell\" + FileCommand + @"\ddeexec\Topic");
RegKey.SetValue("", Topic);
//credits to pinvoke.net
SHChangeNotify(HChangeNotifyEventID.SHCNE_ASSOCCHANGED, HChangeNotifyFlags.SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);
}
CheckFileAssociation(
Application.ExecutablePath, //Application exe path
"mcl", //Document file extension
"Celerity Message ControL file", //Document type description
@"%SystemRoot%\system32\shell32.dll,-152", //Document type icon
"Open MCL File", //Action name
"Open", //File command
"[OpenMCL(\"%1\")]", //DDE command string
"CelerityEDIToolbox", //Application
"System"); //Topic
Do you know one? Please contribute it!