我正在使用WinForms
。我正在尝试制作一个简单的图像查看器。在我的表格中,我有一个PictureBox
。我希望能够右键单击计算机中的任何图片,单击“打开方式”,从列表中单击我的应用程序,图片将在我的应用程序中打开。
[DllImport("Shell32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
public Form1()
{
InitializeComponent();
}
public static bool IsAssociated()
{
return (Registry.CurrentUser.OpenSubKey("Software\\Classes\\.tif", false) == null);
}
public static void Associate()
{
RegistryKey FileReg = Registry.CurrentUser.CreateSubKey("Software\\Classes\\.tif");
RegistryKey AppReg = Registry.CurrentUser.CreateSubKey("Software\\Classes\\Application\\How_To_Open_File_With_Associated_Applicaiton.exe");
RegistryKey AppAssoc = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.tif");
FileReg.CreateSubKey("DefaultIcon").SetValue("", "C:\\Users\\Timmy\\Pictures\\Icons_Folder\\I-View-Icon_V2.ico");//Path to icon
FileReg.CreateSubKey("PerceivedType").SetValue("", "image"); //Something that the file holds.
AppReg.CreateSubKey("shell\\open\\command").SetValue("", "\"" + Application.ExecutablePath + "\" %");
AppReg.CreateSubKey("shell\\edit\\command").SetValue("", "\"" + Application.ExecutablePath + "\" %");
AppReg.CreateSubKey("DefaultIcon").SetValue("", "C:\\Users\\Timmy\\Pictures\\Icons_Folder\\I-View-Icon_V2.ico");
AppAssoc.CreateSubKey("UserChoice").SetValue("Progid", "Application\\How_To_Open_File_With_Associated_Applicaiton.exe");
SHChangeNotify(0x08000000 , 0x0000, IntPtr.Zero, IntPtr.Zero);
}
示例: 下面我打开油漆图片进行演示。
目标:
能够在我的应用程序中将.tif
图像打开到我的picturebox
。
参考
这些是我在网上研究的一些例子,试图完成我正在尝试的任务,但是我发现我的自我陷入了如何告诉程序,“现在拍下这张.tif
图像并将其打开在图片框中:“
Associate File Extension with Application
https://www.youtube.com/watch?v=XtYobuVvcFE
http://www.codeproject.com/Articles/43675/C-FileAssociation-Class
答案 0 :(得分:0)
您需要将可执行文件注册为该文件类型/扩展名的处理程序。
https://msdn.microsoft.com/en-us/library/windows/desktop/hh127451(v=vs.85).aspx