mirror of
https://github.com/HistacomUnity/Histacom2-old.git
synced 2025-01-22 09:02:01 -05:00
50 lines
1.9 KiB
C#
50 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Runtime.InteropServices;
|
|
using Microsoft.Win32;
|
|
|
|
namespace TimeHACK.Engine
|
|
{
|
|
public class FileAssociation
|
|
{
|
|
// Associate file extension with progID, description, icon and application
|
|
public static void Associate(string extension,
|
|
string progID, string description, string icon, string application)
|
|
{
|
|
Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID);
|
|
if (progID != null && progID.Length > 0)
|
|
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(progID))
|
|
{
|
|
if (description != null)
|
|
key.SetValue("", description);
|
|
if (icon != null)
|
|
key.CreateSubKey("DefaultIcon").SetValue("", ToShortPathName(icon));
|
|
if (application != null)
|
|
key.CreateSubKey(@"Shell\Open\Command").SetValue("",
|
|
ToShortPathName(application) + " \"%1\"");
|
|
}
|
|
}
|
|
|
|
// Return true if extension already associated in registry
|
|
public static bool IsAssociated(string extension)
|
|
{
|
|
return (Registry.ClassesRoot.OpenSubKey(extension, false) != null);
|
|
}
|
|
|
|
[DllImport("Kernel32.dll")]
|
|
private static extern uint GetShortPathName(string lpszLongPath,
|
|
[Out] StringBuilder lpszShortPath, uint cchBuffer);
|
|
|
|
// Return short path format of a file name
|
|
private static string ToShortPathName(string longName)
|
|
{
|
|
StringBuilder s = new StringBuilder(1000);
|
|
uint iSize = (uint)s.Capacity;
|
|
uint iRet = GetShortPathName(longName, s, iSize);
|
|
return s.ToString();
|
|
}
|
|
}
|
|
}
|