如何实现文件关联

文件关联,网上资料不多,提供了两个简单的函数,使用方便。
#include <windows.h>
#include <stdio.h>

//---------------------------------------------------------------------------
// 检测文件关联情况
// strExt: 要检测的扩展名(例如: ".txt")
// strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")
// 返回TRUE: 表示已关联,FALSE: 表示未关联
BOOL CheckFileRelation(const char *strExt, const char *strAppKey)
{
    int nRet=FALSE;
    HKEY hExtKey;
    char szPath[_MAX_PATH];  
    DWORD dwSize=sizeof(szPath);  
    if(RegOpenKey(HKEY_CLASSES_ROOT,strExt,&hExtKey)==ERROR_SUCCESS)
    {
        RegQueryValueEx(hExtKey,NULL,NULL,NULL,(LPBYTE)szPath,&dwSize);
        if(_stricmp(szPath,strAppKey)==0)
        {
            nRet=TRUE;
        }
        RegCloseKey(hExtKey);
        return nRet;
    }
    return nRet;
}

//---------------------------------------------------------------------------
// 注册文件关联
// strExe: 要检测的扩展名(例如: ".txt")
// strAppName: 要关联的应用程序名(例如: "C:/MyApp/MyApp.exe")
// strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile")
// strDefaultIcon: 扩展名为strAppName的图标文件(例如: "C:/MyApp/MyApp.exe,0")
// strDescribe: 文件类型描述
void  RegisterFileRelation(char *strExt, char *strAppName, char *strAppKey, char *strDefaultIcon, char *strDescribe)
{
    char strTemp[_MAX_PATH];
    HKEY hKey;
    
    RegCreateKey(HKEY_CLASSES_ROOT,strExt,&hKey);
    RegSetValue(hKey,"",REG_SZ,strAppKey,strlen(strAppKey)+1);
    RegCloseKey(hKey);
    
    RegCreateKey(HKEY_CLASSES_ROOT,strAppKey,&hKey);
    RegSetValue(hKey,"",REG_SZ,strDescribe,strlen(strDescribe)+1);
    RegCloseKey(hKey);
    
    sprintf(strTemp,"%s//DefaultIcon",strAppKey);
    RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
    RegSetValue(hKey,"",REG_SZ,strDefaultIcon,strlen(strDefaultIcon)+1);
    RegCloseKey(hKey);
    
    sprintf(strTemp,"%s//Shell",strAppKey);
    RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
    RegSetValue(hKey,"",REG_SZ,"Open",strlen("Open")+1);
    RegCloseKey(hKey);
    
    sprintf(strTemp,"%s//Shell//Open//Command",strAppKey);
    RegCreateKey(HKEY_CLASSES_ROOT,strTemp,&hKey);
    sprintf(strTemp,"%s /"%%1/"",strAppName);
    RegSetValue(hKey,"",REG_SZ,strTemp,strlen(strTemp)+1);
    RegCloseKey(hKey);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@configuration注解在Spring Framework中用于标识一个类是配置类,可以通过该类定义的@Bean方法来注册和配置Bean。与配置文件关联的方式有两种:通过@PropertySource注解和通过@ConfigurationProperties注解。 1. 通过@PropertySource注解: 使用@PropertySource注解可以将外部的配置文件与@Configuration类关联起来。在@Configuration类中,使用@Value("${key}")注解,其中key是配置文件中的键,可以获取配置文件中的值。 例如,在一个配置文件application.properties中有如下配置: db.url=jdbc:mysql://localhost:3306/testdb db.username=root db.password=123456 然后,在一个使用@Configuration的类中,使用@PropertySource注解将该配置文件关联起来: @Configuration @PropertySource("classpath:application.properties") public class AppConfig { @Value("${db.url}") private String dbUrl; @Value("${db.username}") private String dbUsername; @Value("${db.password}") private String dbPassword; // 使用定义的值进行配置和注册Bean的其他操作 } 2. 通过@ConfigurationProperties注解: 使用@ConfigurationProperties注解可以直接将配置文件中的属性值注入到Java Bean中。 例如,定义一个Java Bean类: public class DatabaseConfig { private String url; private String username; private String password; // 省略setter和getter方法 } 在@Configuration类中使用@ConfigurationProperties注解将配置文件中的属性值注入到上述Java Bean中: @Configuration @ConfigurationProperties(prefix = "db") public class AppConfig { private DatabaseConfig databaseConfig; // 省略其他代码 public void setDatabaseConfig(DatabaseConfig databaseConfig) { this.databaseConfig = databaseConfig; } // 使用数据库配置进行配置和注册Bean的其他操作 } 在配置文件application.properties中,我们可以设置数据库的相关属性: db.url=jdbc:mysql://localhost:3306/testdb db.username=root db.password=123456 在@Configuration类中通过@Autowired或者@Bean方法来调用setDatabaseConfig方法,注入配置文件中的属性值。 以上两种方式都是@configuration与配置文件关联的常用方法。通过这些配置方式,@Configuration类可以方便地获取配置文件中的属性值,并进行相应的配置和注册Bean的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值