我的应用程序中有一个图片框。当我在Windows中打开图像时,而不是打开以显示该图像的默认程序,我想使用我自己的应用程序,并让包含图片框的程序显示图像。
答案 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文件的默认应用(示例),您可以:
HKCR\.jpg\
并创建此shell\open\command
这样的子文件夹。"path_to_exe" "%1"