2010-09-27 46 views
6

我正在一个程序,可以读取,写入和导出文件的工作,这些功能都正常工作和几乎完美。我想现在要做的就是要能够选择一个文件,告诉它“打开方式”(在右键单击上下文在Windows XP菜单),并有我的应用程序能够处理指定的文件。我不知道从哪里开始或在哪里看,所以我想我会在这里问。谢谢。添加“打开方式”功能的C#

+0

问题是如何知道你的应用程序通过主应用程序的EXE或与对话打开您的应用程序文件扩展名 – MHD 2010-09-27 14:51:20

回答

0

嘿,我相信这是在注册表中定义。例如。 MSAccess定义为:

Windows Registry Editor Version 5.00 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit] 
@="&Edit" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\command] 
@="\"C:\\Programmer\\Microsoft Office\\OFFICE11\\MSACCESS.EXE\" /NOSTARTUP \"%1\"" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec] 
@="[SetForeground][ShellOpenDatabase \"%1\"]" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec\Application] 
@="Msaccess" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec\IfExec] 
@="[SHELLNOOP]" 

[HKEY_CLASSES_ROOT\Access.Application.11\shell\Edit\ddeexec\Topic] 
@="ShellSystem" 

GUI还存在于文件夹设置 - >文件类型中。

溴。莫滕

+0

运行的问题是如何处理的文件后,是我的应用程序打开 – MHD 2010-09-27 14:47:06

0

调出运行对话框中,输入:regedit(注册表编辑器)

转到:HKEY_CLASSES_ROOT\*\shell并创建一个名为子项:“打开方式YourApp”,创造条件,新建一个名为另一个子项“命令”。在其默认值上,输入您的exe的路径,然后在参数的末尾添加“%1”。

1

您不妨来看看这款Windows KB文章在:

“如何与应用程序关联一个文件扩展名的(Win32)” http://support.microsoft.com/kb/185453

看起来它给出了怎么办示例代码这在VBScript(?),但它看起来像它通过你需要看看注册表路径。

-1

在Program.cs中,添加如下所示的行:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     var mainForm = new MainForm(); 

     // Add these lines: 
     // ---------------------------------------------- 
     string[] args = Environment.GetCommandLineArgs(); 
     if (args.Count() >= 2) 
      mainForm.LoadFile(args[1]); 
     // ---------------------------------------------- 

     Application.Run(mainForm); 
    } 
} 

哪里LoadFile(string filePath)是你的方法来处理是在从外部传递的文件。