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

本文关键字:文件 默认 程序 工作 何使 应用程序 | 更新日期: 2023-09-27 18:11:20

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

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

我最近就这样做了,尽管我使用了不同的操作,而不是默认的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的类相关联。文档,然后将该类与我的程序关联):

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″

你的场景让我觉得你完全有可能选择任何JPG文件,右键单击文件,选择"打开"-->选择默认程序,浏览到你的c#程序,并选择选项"总是使用选定的程序来打开这类文件"

如果你觉得你需要用编程的方式来完成这个,你需要在注册表中设置它。

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

  • 使用Regedit.exe并转到项目HKCR'.jpg'并创建子文件夹,如shell'open'command
  • 创建一个新的字符串值,并编辑默认值为"path_to_exe" "%1"
  • 编辑你的EXE,以便它可以读取命令行上传递的参数,如果有一个,在picturebox中打开它(是的,还有许多其他控件作为文件存在,文件可以加载在picturebox中,等等…)