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

Ped*_*um 6 c#

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

Mis*_*ble 10

我最近这样做了,虽然我使用了不同的动作,而不是默认的Open动作.

首先你找到一些扩展名的文件类型,比如说.jpg:

var imgKey = Registry.ClassesRoot.OpenSubKey(".jpg")
var imgType = key.GetValue("");
Run Code Online (Sandbox Code Playgroud)

然后找出可执行文件的路径并构建"命令字符串":

String myExecutable = Assembly.GetEntryAssembly().Location;
String command = "\"" + myExecutable + "\"" + " \"%1\"";
Run Code Online (Sandbox Code Playgroud)

并注册您的可执行文件以打开该类型的文件:

String keyName = imgType + @"\shell\Open\command";
using (var key = Registry.ClassesRoot.CreateSubKey(keyName)) {
    key.SetValue("", command);
}
Run Code Online (Sandbox Code Playgroud)

  • 该路径作为第一个参数提供给您的程序.你知道如何访问程序参数吗? (2认同)
  • 您可以使用 Enviroment.GetCommandLineArgs() (2认同)

Dyl*_*ith 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?
Run Code Online (Sandbox Code Playgroud)