如何使C#应用程序作为某些文件的默认程序?
我的应用程序里面有一个图片框。 当我在Windows中打开图像时,而不是打开以显示该图像的默认程序,我想使用我自己的应用程序并让包含图片框的程序显示图像。
我最近这样做了,虽然我使用了不同的动作,而不是默认的Open动作。
首先你找到一些扩展名的文件类型,比如说.jpg:
var imgKey = Registry.ClassesRoot.OpenSubKey(".jpg") var imgType = key.GetValue("");
然后,您找到可执行文件的路径并构建“命令字符串”:
String myExecutable = Assembly.GetEntryAssembly().Location; String command = "\"" + myExecutable + "\"" + " \"%1\"";
并注册您的可执行文件以打开该类型的文件:
String keyName = imgType + @"\shell\Open\command"; using (var key = Registry.ClassesRoot.CreateSubKey(keyName)) { key.SetValue("", command); }
您需要制作一些注册表项。 首先,您需要将文件扩展名与类名相关联(类名可以是任何内容,只需填写)。
因此,例如,如果我想将.foo扩展名与我的Blah.exe程序关联,我将创建以下注册表项(注意:在这种情况下,我将.foo与一个名为Foo.Document的类相关联,然后将该类与我的节目):
Key: HKLM\SOFTWARE\Classes\.foo Value: = “Foo.Document” Key: HKLM\SOFTWARE\Classes\Foo.Document Value: = “Foo Document” Key: HKLM\SOFTWARE\Classes\Foo.Document\shell\open\command Value: = “[blah.exe]” “%1″
您的场景让我觉得您完全可以选择任何JPG文件,右键单击该文件,选择“打开方式” – >选择默认程序,浏览到您的C#程序并选择“始终使用所选”程序打开这种文件“
如果您认为需要以编程方式执行此操作,则需要在注册表中设置此项。
这是一个SO链接 ,显示了该过程。
要将您的应用程序设置为Jpeg文件的默认应用程序(示例),您可以:
- 使用Regedit.exe并转到项目
HKCR\.jpg\
并创建类似此shell\open\command
子文件夹。 - 在那里创建一个新的字符串值并将默认值编辑为
"path_to_exe" "%1"
- 编辑您的EXE,以便它可以读取在命令行上传递的参数,如果有的话,在picturebox中打开它(是的,许多其他控件,因为文件存在,文件可以加载到图片框等等)