如何使C#应用程序作为某些文件的默认程序?

时间:2011-10-17 04:16:32

标签: c#

我的应用程序中有一个图片框。当我在Windows中打开图像时,而不是打开以显示该图像的默认程序,我想使用我自己的应用程序,并让包含图片框的程序显示图像。

4 个答案:

答案 0 :(得分:9)

我最近这样做了,虽然我使用了不同的动作,而不是默认的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);
}

答案 1 :(得分:5)

您需要制作一些注册表项。首先,您需要将文件扩展名与类名相关联(类名可以是任何内容,只需填写)。

因此,例如,如果我想将.foo扩展名与我的Blah.exe程序关联,我将创建以下注册表项(注意:在这种情况下,我将.foo与一个名为Foo.Document的类关联,然后关联那个课程与我的程序):

Key: HKLM\SOFTWARE\Classes\.foo
Value: <default> = “Foo.Document”

Key: HKLM\SOFTWARE\Classes\Foo.Document
Value: <default> = “Foo Document”

Key: HKLM\SOFTWARE\Classes\Foo.Document\shell\open\command
Value: <default> = “[blah.exe]” “%1″

答案 2 :(得分:3)

您的方案让我觉得您完全有可能只需选择任何JPG文件,右键单击该文件,选择“打开方式” - &gt;选择默认程序,浏览到您的C#程序并选择“始终使用所选程序打开此类文件”选项

如果您认为需要以编程方式执行此操作,则需要在注册表中进行设置。

这是显示流程的SO link

答案 3 :(得分:1)

要将您的应用设置为Jpeg文件的默认应用(示例),您可以:

  • 使用Regedit.exe并转到项目HKCR\.jpg\并创建此shell\open\command这样的子文件夹。
  • 创建新的字符串值并将默认值编辑为"path_to_exe" "%1"
  • 编辑您的EXE以便它可以读取在命令行上传递的参数,如果有的话,在picturebox中打开它(是的,许多其他控件作为文件存在,文件可以加载到图片框等... )
相关问题