我的应用程序中有一个图片框。当我在Windows中打开一张图片时,想要使用我的应用程序来显示图片,而不是默认的程序。需要让包含图片框的程序显示该图片。
我的应用程序中有一个图片框。当我在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: <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″
如果您想将您的应用程序设置为Jpeg文件(例如)的默认应用程序,则可以:
HKCR\.jpg\
,并创建如下子文件夹:shell\open\command
。"path_to_exe" "%1"
Path.GetDirectory(arg)
。 - Marco