65.9K
CodeProject 正在变化。 阅读更多。
Home

将文件扩展名与 Shell OPEN 命令和应用程序关联

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.76/5 (17投票s)

2000年6月23日

viewsIcon

262428

downloadIcon

5017

注册表条目和 MFC 类,用于将文件扩展名与程序关联。

  • 下载源文件 - 3 Kb
  • 下载演示项目 - 17 Kb
  • 引言

    此源代码包含一个类 CGCFileTypeAccess,它可以将文件扩展名与程序关联。

    关联允许在 Windows 资源管理器窗口中单击图标时激活程序的新的实例。文件的完整文件路径将作为命令行参数发送到该程序。

    “打开”命令也出现在文件类型的 Shell 上下文菜单中。从上下文菜单中选择“打开”命令会将文件作为命令行参数发送到程序的新的实例。

    使用该类关联文件扩展名的示例如下所示,可以在演示程序的 InitInstance 中找到。

    CGCFileTypeAccess TheFTA;
    
    // get full file path to program executable file
    TCHAR	szProgPath[MAX_PATH * 2];
    ::GetModuleFileName(NULL, szProgPath, sizeof(szProgPath)/sizeof(TCHAR));
    
    CString csTempText;
    
    TheFTA.SetExtension("CGFILETYPETEST");
    
    // just pass file path in quotes on command line
    csTempText  = szProgPath;
    csTempText += " \"%1\"";
    TheFTA.SetShellOpenCommand(csTempText);
    TheFTA.SetDocumentShellOpenCommand(csTempText);
    
    TheFTA.SetDocumentClassName("CGFileType.Document");
    
    // use first icon in program
    csTempText  = szProgPath;
    csTempText += ",0";
    TheFTA.SetDocumentDefaultIcon(csTempText);
    
    // set the necessary registry entries	
    TheFTA.RegSetAllInfo();
    

    相关的注册表条目都位于 HKEY_CLASSES_ROOT 下。 两个主要的根键是“FileExtension”和“Document Class Name”。 这些两个主要键下的键和值控制文件关联和 Shell 打开命令。

    演示程序将执行上面列出的文件关联代码。 运行至少一次后,每次“打开”关联的文件类型时,程序都会在消息框中显示来自命令行的文件路径。

    © . All rights reserved.