我有一个MDI应用程序。这个MDI应用程序还有许多其他工具,包括编辑器。我想用我的MDI应用程序的编辑器打开所有“.txt”文件,从而使我的应用程序成为所有“.txt”文件的默认查看器。
每当用户编辑“.txt”文件时,MDI应用程序应该启动,编辑器窗口应该填充所选“.txt”文件的内容。
请问我能做到这一点吗?
由于
答案 0 :(得分:4)
在我的应用程序中,我在发布时执行此操作:
[System.Runtime.InteropServices.DllImport("Shell32.dll")]
private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
private void GetDefaultsFromRegistry()
{
if (Registry.GetValue("HKEY_CLASSES_ROOT\\MyApp", String.Empty, String.Empty) == null)
{
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\MyApp", "", "My File Type");
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\MyApp", "FriendlyTypeName", "My Friendly Type Name");
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\MyApp\\shell\\open\\command", "",
"path\\to\\my\\app \"%1\"");
Registry.SetValue("HKEY_CURRENT_USER\\Software\\Classes\\.ext", "", "MyApp");
//this call notifies Windows that it needs to redo the file associations and icons
SHChangeNotify(0x08000000, 0x2000, IntPtr.Zero, IntPtr.Zero);
}
}
当然,所有路径,名称和扩展名都已更改为您的应用程序。
但要小心弄乱用户的.txt文件关联。我检查每次启动时的分配,因为我的应用程序使用自定义类型,并且仅部署在内部映像系统上。我不知道你的应用程序在哪里部署,但如果我从互联网上下载的一些随机实用程序不断改变我的.txt文件关联,我会非常恼火,我相信很多其他人也会。
答案 1 :(得分:3)
您需要更改此注册表项:
HKCR\txtfile\shell\open\command
将参数结尾处的%1更改为程序的默认值。然后在你的程序中处理命令行args,用它做你想做的事。
答案 2 :(得分:2)